我通过关联User,Prog和Enrollment模型得到了has_many。想法是用户可以将Prog添加到他的个人资料列表中,并且Prog可以拒绝或接受来自用户的请求。
这就是接受方法的样子:
入学#接受
def accept
@enrollment = Enrollment.find_by_user_id(params[:id])
@enrollment.status = "accepted"
@enrollment.save!
....
end
我不明白为什么这不对,如果我在accept方法中正确理解,则注册必须得到user.id和prog.id才能从数据库中检索数据。因此,user.id与link_to一起传递,但是如何显示prog.id来帮助我找到需要的注册列?
<% @prog.users.each do |user| %>
<%= link_to "#{user.email} accept", controller: "/enrollments", action: "accept", id: user.id, method: "post" %>
<% end %>
我的猜测,如果这是真的,就会错过一些基本的东西,而不是让我知道我应该集中精力让它发挥作用。谢谢。
答案 0 :(得分: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]