将其他参数传递给控制器

时间:2009-10-29 12:09:13

标签: ruby-on-rails ruby

我有这个链接来创建一个新页面:

<p><%= link_to "Add a page", :action => "new" %></p>

控制器中调用的代码是:

def new
  @page = Page.new
  @visuals = Visual.find(:all)
end

我想传递一个额外的参数来预先设置表单中的字段,如下所示:

<p><%= link_to "Add a page", :action => "new/parent_id/2" %></p>

并在控制器中

def new
  @page = Page.new
  @page.parent_id = params[:parent_id]
  @visuals = Visual.find(:all)
end

2 个答案:

答案 0 :(得分:4)

link_to "new", :action => 'new', :parent_id => 1

...会给你:

/controller/new?parent_id=1

如果你弄乱路线,你可以这样做:

map.new_page_from_parent "/new_from_parent/:parent_id"

......并使用如下:

link_to "new", new_page_from_parent_path(:parent_id => 1)

# gives
/new_from_parent/1

# accessed via
params[:parent_id] => 1

答案 1 :(得分:1)

要获取新参数而不更改路由,只需将其作为查询字符串传递:

new?parent_id=2

然后它将以params[:parent_id]

的形式提供给您