2009-10-29 3 views
2

У меня есть эта ссылка, чтобы создать новую страницу:передать дополнительные параметры в контроллер

<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 

ответ

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

.. . даст вам:

/controller/new?parent_id=1 

Если вы беспорядок Ith маршрутов, вы можете сделать:

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

1

Чтобы получить новый параметр без изменения маршрутов, просто передать его в виде строки запроса:

new?parent_id=2 

, то он будет доступен вам, как params[:parent_id]

Смежные вопросы