背景:Resource
モデルでacts_as_votable gemを使用してログを記録しています。私はサインインしている(a)のユーザを収容するようなボタンの動作を分割するに取り組んでいますと、(b)に署名していないユーザー。Rails - 応答文がif文でラップされたときに応答しない
前/リソースコントローラのアクション後の
before_action :set_resource, only: [:show, :edit, :update, :destroy]
before_action :save_original_path, only: [:like]
before_action :require_signin!, only: [:like]
after_action :clear_original_path, only: [:like]
ユーザーがサインインしていない場合、同じボタンをクリックすると、元のパスが保存されます - サインインするよう強制されます - 元のパス(リソースが好きです)に戻ります - >リダイレクトされますリソースインデックスに戻る。
ユーザーがサインインしている場合、投票を記録してページを更新するためにajaxが使用されます。
like
resources_controller.rbでアクション
def like
@resource = Resource.find(params[:id])
@resource.liked_by current_user
if session[:return_to] != nil
redirect_to resources_path
else
respond_to do |format|
format.html
format.js
end
end
end
ファンキーな何かが上記のようなアクションでif文で起こっています。 redirect_to resources_pathフローはサインインしていないユーザーに対しては完全に機能していますが、respond_to ajaxコールはページを更新していません。
if文からrespond_to呼び出しを移動してif文を削除すると、正常に動作します。
アイデア?