[英]Rails 4 default respond_to for ajax controller
我有一個Rails控制器,其中每個動作對每個動作都有相同的response_to塊,例如:
def some_action
respond_to do |format|
format.html { redirect_to :back }
format.js { render layout: false }
end
end
有沒有一種方法可以將其設置為所有操作的默認響應? 我知道我可以用
respond_to :html, :js
在控制器的頂部,但是可以用於設置每種格式的特定響應嗎?
通過response_with和respond_to文檔和源代碼。 你可以
respond_to
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
flash[:notice] = 'User was successfully created.'
format.html { redirect_to(@user) }
format.xml { render xml: @user }
else
format.html { render action: "new" }
format.xml { render xml: @user }
end
end
end
respond_with
respond_to :html, :xml
def create
@user = User.new(params[:user])
flash[:notice] = 'User was successfully created.' if @user.save
respond_with(@user)
end
解決方法是創建您自己的自定義respond
方法,或手動檢查mime
類型,如下所示:
def some_action
render json: {"a" => "s"} if request.format.json?
render :some_action if request.format.html?
end
如果您希望所有操作都完全相同地響應,請將respond_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
這會使您的控制器變干,我認為這是個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.