假设我在控制器中有一个标准的new
方法:
def new
@doc = Doc.new
respond_to do |format|
format.html
format.json { render json: @doc }
end
end
如何方便地通过它传递参数,即:
def new(i)
...
end
允许我在视图中写这样的东西:
<%= link_to(e.name, new_doc_path(e.id)) %>
干杯!
Rails不是这样工作的。如果要向控制器传递任何内容,则必须使用params
散列。在您的示例中:
视图:
<%= link_to(e.name, new_doc_with_parameter_path(e.id)) %>
控制器:
def new
id = params[:id]
# do something with `id`
end
要做到这一点,你必须改变你的路由,这样你就可以通过URL传递一个id
到你的新动作:
get "/docs/new/:id" => "docs#new", :as => :new_doc_with_parameter
虽然上面的应该有效,但在您的情况下,最好查看嵌套资源。