假设我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)) %>
干杯!
假设我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通过 URL 传递给您的新操作:
get "/docs/new/:id" => "docs#new", :as => :new_doc_with_parameter
尽管上述内容应该可行,但在您的情况下,查看Nested Resources可能会更好。