我想你可以认为这是我之前的question的延续。基本上我正在渲染js.erb
部分,这使得ajax功能可以喜欢/不喜欢餐馆菜。我有四个动作可以解决这个问题:
class DishesController < ApplicationController
def like
@dish.liked_by current_user
respond_to do |format|
format.js { render partial: "dishes/shared/vote.js.erb" }
end
end
def unlike
@dish.unliked_by current_user
respond_to do |format|
format.js { render partial: "dishes/shared/vote.js.erb" }
end
end
...
end
为了干这个问题,我计划将respond_to
方法放在before_action
回调中:
class DishesController < ApplicationController
before_action :render_vote_partial
...
private
...
def render_vote_partial
respond_to do |format|
format.js { render partial: "dishes/shared/vote.js.erb" }
end
end
end
不幸的是,这根本不会呈现部分。我做错了什么?
答案 0 :(得分:1)
如果你想干掉respond_to,只需将它贴在一个方法中(就像你已经这样)并在每次动作后调用该方法。
而不是
before_action :render_vote_partial
就这样做:
def like
# do your work here ...
render_vote_partial
end
def unlike
# do your work here ...
render_vote_partial
end