1

假设我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)) %>

干杯!

4

1 回答 1

7

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可能会更好。

于 2013-01-07T01:06:05.970 回答