Ruby on Rails 4form_for submiting other submits
我的表單是編輯表格證書。該表格根據出席和傳遞屬性顯示用戶。我有一個按鈕,用於通過和/或參加更新證書表。
現在它正在運行參加和通過,當我只想每次更新一個單獨。我可以用@training/@ passed/@ untrained/@ unpassed放置什麼,使它只運行與實例變量的f.submit關聯的代碼。
所以if form_for @passed
提交提交只運行if @passed。像if @passed.nil? == false
或者有沒有辦法用form_for發送ID?
我的表格:
<%= form_for @untrained, :url => certificates_path(@untrained) do |f| %>
<p> Trained Users </p>
<%= select_tag "certificate[user_id]", options_for_select(@current_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
<%= f.submit "Un-Train", class: "btn btn-large btn-primary" %>
<% end %>
<%= form_for @trained, :url => certificates_path, :method => :post do |f| %>
<p> Non-Trained Users </p>
<%= select_tag "certificate[user_id]", options_for_select(@non_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
<%= f.submit "Train", class: "btn btn-large btn-primary" %>
<% end %>
<%= form_for @unpassed, :url => certificates_path(@unpassed) do |f| %>
<p> Certified Users </p>
<%= select_tag "certificate[user_id]", options_for_select(@current_passed.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
<%= f.submit "Un-Certify", class: "btn btn-large btn-primary" %>
<% end %>
<%= form_for @passed, :url => certificates_path, :method => :post do |f| %>
<p> Non-Certified Users </p>
<%= select_tag "certificate[user_id]", options_for_select(@non_passed.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %>
<%= f.submit "Certify", class: "btn btn-large btn-primary" %>
<% end %>
控制器:
def create
if @trained = Certificate.where(user_id: params[:certificate][:user_id]).first
@trained.update_attributes(attend: "Yes")
else
@trained = Certificate.new(params[:certificate])
if @trained.save
@trained.update_attributes(attend: "Yes")
end
end
if @passed = Certificate.where(user_id: params[:certificate][:user_id]).first
@passed.update_attributes(pass: "Yes")
else
@passed = Certificate.new(params[:certificate])
if @passed.save
@passed.update_attributes(pass: "Yes")
end
end
redirect_to grandstreamers_resellers_path
end
def update
if @trained = Certificate.where(user_id: params[:certificate][:user_id])
@trained.first.update_attributes(attend: "No")
redirect_to grandstreamers_resellers_path
elsif @untrained = Certificate.where(user_id: params[:certificate][:user_id])
@untrained.first.update_attributes(attend: "No")
redirect_to grandstreamers_resellers_path
end
if @passed = Certificate.where(user_id: params[:certificate][:user_id])
@passed.first.update_attributes(pass: "No")
redirect_to grandstreamers_resellers_path
elsif @unpassed = Certificate.where(user_id: params[:certificate][:user_id])
@unpassed.first.update_attributes(pass: "No")
redirect_to grandstreamers_resellers_path
end
end
可能是每個表單中的隱藏字段? – archie