【问题标题】:rails variables between controllers控制器之间的rails变量
【发布时间】:2012-10-07 08:49:13
【问题描述】:

Y.A.N(又一个新手)

使用 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 %>

【问题讨论】:

标签: ruby-on-rails ruby variables activerecord parameters


【解决方案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

【讨论】:

    【解决方案2】:

    当你需要找学生时

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

    您的路线肯定有问题。

    你的路线应该是这样的:

    resources :students do
      resources :contacts
    end
    

    你的代码应该是:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2011-07-29
      • 2013-05-06
      • 2012-07-19
      相关资源
      最近更新 更多