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

时间:2013-01-07 00:58:31

标签: ruby-on-rails-3 model-view-controller

说我在控制器中有一个标准的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)) %>

干杯!

1 个答案:

答案 0 :(得分:7)

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

查看:

<%= link_to(e.name, new_doc_with_parameter_path(e.id)) %>

控制器:

def new
  id = params[:id]
  # do something with `id`
end

要实现此目的,您必须更改路线,以便通过网址将id传递给您的新操作:

get "/docs/new/:id" => "docs#new", :as => :new_doc_with_parameter

虽然上面的有效,但在您的情况下,最好还是看看Nested Resources