0

我通过用户、程序和注册模型的关联拥有 has_many。想法是用户可以将 Prog 添加到他的个人资料列表中,Prog 可以拒绝或接受来自用户的请求。

这是接受方法的样子:

招生#接受

def accept
  @enrollment = Enrollment.find_by_user_id(params[:id])
  @enrollment.status = "accepted"
  @enrollment.save!
  ....
end

我不明白为什么这是不对的,如果我在接受方法中理解正确,注册必须获取 user.id 和 prog.id 才能从数据库中检索数据。因此,user.id 与 link_to 一起传递,但我如何显示 prog.id 以帮助 Enrollment 找到我需要的列?

  <% @prog.users.each do |user| %> 
  <%= link_to "#{user.email} accept", controller: "/enrollments", action: "accept", id: user.id, method: "post" %>
  <% end %>

如果这是真的,我的猜测是错过了一些基本的东西,而不是让我知道我应该关注什么才能让它发挥作用。谢谢。

4

1 回答 1

0

如果我理解正确,您只需将两个参数(用于 user_id 和 prog_id)传递到链接并使用这两个参数找到注册。看法:

<%= link_to "#{user.email} accept", controller: :enrollments, action: :accept, user_id: user.id, prog_id: @prog.id, method: :post %>

在控制器中:

@enrollment = Enrollment.find_by_user_id_and_prog_id params[:user_id], params[:prog_id]
于 2013-06-01T06:55:59.190 回答