Vitalis wrote in post #1110889:
<%= link_to "#{user.email} accept", controller: "/enrollments", action:
"accept", method: "post", id: user.id, id: @prog %>/
I understand that accept method is lack of @prog to find right column in
Enrollment table, but I don't undestand how do I pass this id?
<%= link_to "#{user.email} accept", controller: "/enrollments",
action: "accept", method: "post", id: user.id, prog_id: @prog.id %>
before_filter :load_prog
def create
Enrollment.create(user_id: current_user.id, prog_id: @prog.id, status:
"pending")
redirect_to @prog, notice: "Programme is added"
end
def accept
@enrollment.status = "accepted"
@enrollment.save!
redirect_to progs_path, notice: "added"
end
private
def load_prog
@prog = Prog.find(params[:prog_id])
end
If you decide to use a before_filter as shown here make sure you pass
the Prog ID as "prog_id" for all actions.
P.S. It is generally considered good practice to avoid abbreviations in
domain objects. What is a "Prog"? Could be Program, could be
Progression, etc. If you mean "Program" then use "Program" as your class
name and variable references. There are exceptions to every rule, such
as Proc objects and abbreviations that are very well understood by
everyone. it's still good practice to avoid them whenever there is a
possibility of ambiguity.