其他参数传递给控制器​​

问题描述:

我有此链接创建一个新的页面:其他参数传递给控制器​​

<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 

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

.. 。会给你:

/controller/new?parent_id=1 

如果你把w第i个路线,你可以这样做:

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 
+0

WES感谢,这是一个非常干净,完整的答案! – rtacconi 2009-11-02 09:49:45

要获得一个新的参数,不改变路线,只是通过它作为查询字符串:

new?parent_id=2 

那么这将是提供给你作为params[:parent_id]