「正しい」ブール列を持つ回答モデルがあります。スタックオーバーフローと同じように、回答を正しいとマークできます。トグルを使用する次のコントローラーコードがあります! 「正しい」ブール値を切り替えるメソッドですが、切り替えてください!回避したいすべての検証をスキップします。
トグルを使用しないようにコードを修正するにはどうすればよいですか? コントローラーで検証を許可し、単一のボタンを使用してブール値を切り替えますか?
ルート.rb
resources :answers do
member { put :correct }
end
correct_answer PUT /answers/:id/correct(.:format) answers#correct
answer_controller.rb
def correct
@answer = Answer.find(params[:id])
if @answer.toggle!(:correct)
respond_to do |format|
format.html { redirect_to @answer, notice: "Submitted" }
format.js
end
end
_answer.html.erb
<div id="correct_answer_<%= answer.id %>" class="<%= answer.correct == true ? 'green-tick' : 'default-tick' %>">
<% if answer.question.user == current_user %>
<%= link_to "✓", correct_answer_path(answer), id: "tick", class: "correct_#{answer.id}", remote: true, method: :put %>
<% else %>
<% if answer.correct == true %>
<div id="tick", class='correct_<% answer.id %>'> ✓</div>
<% end %>
<% end %>
</div>