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



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

虽然上面的应该有效,但在您的情况下,最好查看嵌套资源。

相关内容

  • 没有找到相关文章

最新更新