Ruby on rails Rails 4对ajax控制器的默认响应
我有一个rails控制器,其中每个动作都有相同的respond_来阻止每个动作,例如:Ruby on rails Rails 4对ajax控制器的默认响应,ruby-on-rails,Ruby On Rails,我有一个rails控制器,其中每个动作都有相同的respond_来阻止每个动作,例如: def some_action respond_to do |format| format.html { redirect_to :back } format.js { render layout: false } end end 有没有办法将其设置为所有操作的默认响应?我知道我可以用 respond_to :html, :js 在控制器的顶部,但这可以用于设置每种格式的特定
def some_action
respond_to do |format|
format.html { redirect_to :back }
format.js { render layout: false }
end
end
有没有办法将其设置为所有操作的默认响应?我知道我可以用
respond_to :html, :js
在控制器的顶部,但这可以用于设置每种格式的特定响应吗?浏览文档和源代码。你也可以
使用响应
或用
解决方法是创建自己的自定义
respond
方法,或手动检查mime
类型,如下所示:
****注意:这是一个非常糟糕的做法,我建议坚持惯例。
如果希望所有操作的响应完全相同,请将
respond\u to
块移动到方法中
def some_action
# do things
respond
end
def another_action
# do more things
respond
end
def special_action
# do special things
respond
end
private
def respond
respond_to do |format|
format.html { redirect_to :back }
format.js { render layout: false }
end
end
这会使你的控制器干涸,我想这就是问题所在。这就是我所做的,我只是想知道是否有一种更干涸的方式,在每次操作中不需要相同的调用。
respond_to :html, :xml
def create
@user = User.new(params[:user])
flash[:notice] = 'User was successfully created.' if @user.save
respond_with(@user)
end
def some_action
render json: {"a" => "s"} if request.format.json?
render :some_action if request.format.html?
end
def some_action
# do things
respond
end
def another_action
# do more things
respond
end
def special_action
# do special things
respond
end
private
def respond
respond_to do |format|
format.html { redirect_to :back }
format.js { render layout: false }
end
end