重定向不再起作用了

时间:2011-05-24 23:38:20

标签: ruby-on-rails ruby-on-rails-3

我正在将我的用户重定向到上一页。

以下是电影控制器中更新方法的示例。

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参数不起作用?

3 个答案:

答案 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