0

颜(又一个新人)

使用 rails,我有一个“学生”控制器和一个“联系人”控制器,当然还有一个学生模型和联系人模型。contact belongs_to student 和 student 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 %>
4

2 回答 2

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
于 2012-10-17T06:53:10.247 回答
0

当你需要找到学生时

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

你的路线肯定有问题。

你的路线应该是这样的:

resources :students do
  resources :contacts
end

你的代码应该是:

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

如果您正确初始化@students,您发布的索引视图应该可以正常工作。

于 2012-10-17T10:55:42.330 回答