我正在将我的用户重定向到上一页。
以下是电影控制器中更新方法的示例。
def update
@movie = Movie.find(params[:id])
if @movie.update_attributes(params[:movie])
flash[:notice] = "The given movie is now updated."
end
respond_with(@movie, location: :back)
end
我收到了这个错误。
undefined method 'hash_for_back_url' for #<Module:0x00000103eeaaa8>
行 respond_with
。
我正在使用Rails 3.1 rc1和Ruby 1.9。
在做这样的事情时有效。
respond_with(@movie, location: request.referer)
任何人都知道为什么:back
参数不起作用?
答案 0 :(得分:8)
对我有用的唯一解决方案是使用request.referer
。
解决方案#1
respond_with(@comment, location: request.referer)
解决方案#2
class ApplicationController < ActionController::Base
helper_method :redirect_back
def redirect_back(options = {})
if request.referer
redirect_to request.referer, options
else
redirect_to root_path, options
end
end
end
# View / controller
redirect_back notice: "Sending you back ... hopefully"
答案 1 :(得分:0)
在这种情况下,respond_with期望:location是url helper方法的结果,如respond_with(@movie, :location => movie_url(@movie))
您可能应该使用其中一种方法:
重定向到redirect_to @movie
的信息页面,相当于redirect_to movie_path(@movie)
使用render :action => :edit
的更新数据再次呈现表单(:edit表示用于显示表单的操作)
答案 2 :(得分:0)
这个怎么样:
respond_with @movie do |format|
format.html { redirect_to :back }
end
让您覆盖默认的html响应器,以便您可以使用redirect_to :back