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 :(得分: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
答案 1 :(得分:0)
当您需要找到
的学生时@student = Student.find(params[:format])
你的路线肯定有问题。
您的路线应该是:
resources :students do
resources :contacts
end
你的代码应该是:
@student = Student.find(params[:student_id])
如果您正确初始化@students,您发布的索引视图应该可以正常工作。