2012-10-17 80 views
0

Y.A.N(另一個新手)軌控制器之間的變量

使用Rails,我有一個「學生」控制器和「聯繫人」控制器,當然,學生模型和接觸模型。聯繫belongs_to學生和學生has_many聯繫人。我有一個學生的索引頁,列出每個學生可以選擇爲每個學生單擊「添加聯繫人」。當我嘗試調用聯繫人的「新」操作並隨後調用聯繫人的「新」視圖時,我正在失去它。我如何/在哪裏初始化學生和/或聯繫人,以便聯繫人知道student_id。現在,我將學生傳遞給new_contact_path,但接下來我必須在聯繫人控制器內將student_Id引用爲params(:format),以便使其工作。這顯然不是最好的方法。 的下面的代碼的任何想法件:

ContactsController: 
def new 
    @contact = Contact.new 
    @student = Student.find(params[:format]) 
end 

students index: 
<% @students.each do |student| %> 
    <tr>   
    <td><%= link_to 'Contacts', new_contact_path(student) %></td> 
    </tr> 
<% end %> 
+0

您可以使用嵌套資源。在這種情況下,您自動在contacts控制器中擁有student_id(http://guides.rubyonrails.org/routing.html#nested-resources)。 – andrykonchin

回答

0

當你需要找到

@student = Student.find(params[:format]) 

肯定是有什麼問題你的路由學生。

你的路線應該是這樣的:

resources :students do 
    resources :contacts 
end 

而且你的代碼應該是:

@student = Student.find(params[:student_id]) 

您發佈的索引視圖應該工作正常罰款只要你初始化的@students。

1

,你可以在new_contact_path鏈路通student_id數據。

<%= link_to 'Contacts', new_contact_path(student, :student_id => student.id) %> 

,並在控制器

class ContactsController 
    def new 
    @student = Student.find(params[:student_id]) 
    end 
end