0
私のフォームにトグルボタンがあり、トグルしています。コントローラーからのデータベースのブール値。 しかし、両方ともHTMLとjsonリクエストを送信しています。私はちょうど1つのjsonリクエストを送信したい。 (使用して、レール3 *)Ruby onレール3 - チェックボックスフィールドをform_for内で使用すると、ajax呼び出しでhtmlとjsonの両方のリクエストがjsまたはjsonになる必要があります。
post_as_premium.html.erb
<%= form_for @editor, url: set_as_premium_reporter_path, remote: true do |f| %>
<div class="editorSettings">
<div class="premiumCheck">
<label class="clearfix" for="user_post_premium_permission">
<span class="checkBoxWrap <%= @editor.post_premium_permission ? 'allChecked' : '' %>">
<%= f.check_box :post_premium_permission %>
</span>
</label>
</div>
</div>
<% end %>
<script type="text/javascript">
if($("#user_post_premium_permission").parent("span").hasClass('allChecked')){
$("#user_post_premium_permission").attr('checked', true);
}else{
$("#user_post_premium_permission").attr('checked', false);
}
$("#user_post_premium_permission").on("change", function(){
if ($(this).prop('checked')){
$(this).parent("span").addClass("allChecked");
}else{
$(this).parent("span").removeClass("allChecked");
}
this.form.submit();
});
</script>
2]コントローラ -
def post_as_premium
@editor = current_user
end
def set_as_premium
if params[:editor] && params[:user][:post_premium_permission]
current_user.update_attributes(post_premium_permission: params[:user][:post_premium_permission])
respond_to do |format|
format.js { head :ok }
format.html { redirect_to post_as_premium_path(current_user)}
end
end
私は 'form.submit()'はフォームを送信すると思います。送信ボタンをクリックしたことを暗示します。 – HarlemSquirrel
@HarlemSquirrelリクエストはjsonまたはjsでなければなりませんが、htmlではありません。 :( – Kalashir