1
"올바른"부울 열이있는 응답 모델이 있습니다. 따라서 stackoverflow와 마찬가지로 답변을 올바른 것으로 표시 할 수 있습니다. 토글을 사용하는 다음 컨트롤러 코드가 있습니다! 메서드를 사용하여 "올바른"부울 값을 토글합니다. 모든 검증을 건너 뜁니다.유효성 검사를 사용하여 link_to를 사용하여 레일 부울 토글 전환
토글을 사용하지 않도록 내 코드를 어떻게 수정할 수 있습니까? 컨트롤러에서 유효성 검사를 허용하고 여전히 단일 버튼을 사용하여 부울 값을 전환 할 수 있습니까?
routes.rb
resources :answers do
member { put :correct }
end
correct_answer PUT /answers/:id/correct(.:format) answers#correct
answers_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>