Rails:通过控制器方法传递参数

oka*_*56k 1 model-view-controller ruby-on-rails-3

假设我new在控制器中有一个标准方法:

def new
  @doc = Doc.new
  respond_to do |format|
    format.html
    format.json { render json: @doc }
  end
end
Run Code Online (Sandbox Code Playgroud)

我如何通过它来促进传递论证,即:

def new(i)
  ...
end
Run Code Online (Sandbox Code Playgroud)

允许我在视图中写这样的东西:

<%= link_to(e.name, new_doc_path(e.id)) %>
Run Code Online (Sandbox Code Playgroud)

干杯!

Mis*_*cha 7

Rails不能那样工作.如果要将任何内容传递给控制器​​,则必须使用params哈希.在你的例子中:

视图:

<%= link_to(e.name, new_doc_with_parameter_path(e.id)) %>
Run Code Online (Sandbox Code Playgroud)

控制器:

def new
  id = params[:id]
  # do something with `id`
end
Run Code Online (Sandbox Code Playgroud)

为此,您必须更改路线,以便可以通过idURL传递给新操作:

get "/docs/new/:id" => "docs#new", :as => :new_doc_with_parameter
Run Code Online (Sandbox Code Playgroud)

虽然上面应该可行,但在你的情况下,最好看一下嵌套资源.