2012-06-20 52 views
1

我擁有我的持有者(將其視爲一個關係表,將關係表視爲持有屬於某個持有者和持有者的所有問題的關係表具體數據如姓名)顯示頁面的問題列表和新問題鏈接的鏈接。Rails方式:在一個控制器的顯示頁面上進行鏈接,並將其連接到另一個控制器的新頁面

<% @questions.each do |question| %> 
    <%= question.question %> 
    <%= question.answer %> 
    <%= link_to "Edit Question", edit_question_path(question) %> 
    <br /> 
<% end %> 

<%= link_to "New Question", new_question_path %> 

這樣做的目標是在創建新問題時設置holder_id。如果有問題,我在模型中設置了belongs_to和has_many。

我已經嘗試了幾個不同的東西,例如<%= link_to "New Question", new_question_path(@holder) %>,但只是將格式設置爲:@ holder.id。我想,我可以濫用它來使其工作,但這是一個非常醜陋的黑客攻擊。

我聽說過人們使用嵌套路線,而不是超過2或3深。所以必須有一種方法可以在不使用嵌套路由的情況下做到這一點。

  1. 我正確的是有沒有辦法做到這一點,而不使用嵌套的路線?它是什麼?
  2. 爲什麼嵌套路線對於這個例子來說是好的或壞主意?

回答

2

我想你可以做這樣的事情。
在你的鏈接到新:

<%= link_to "New Question", new_question_path(:holder_id => @holder.id) 

此鏈接將使您的請求發送holder_id作爲參數傳遞給行動在question_controller.rb。所以你可以這樣使用它:

def new 
    holder_id = params[:holder_id] 
    # Do something with this id 
    # ... 
end 
+0

但是,你通常會使用嵌套路由嗎? –

+0

取決於。如果持有者模型總是嵌套在問題中,而沒有視圖/控制器獨立,那麼我肯定會使用嵌套路線。 – MurifoX

相關問題