Rails redirect_to在浏览器中显示错误的URL

时间:2012-09-12 19:21:21

标签: ruby-on-rails-3 redirect jquery-mobile

我有2个控制器:游戏和玩家。

  1. 游戏创建我的游戏和第一个玩家,并重定向到玩家的编辑动作。
  2. 用户向玩家提交更新,玩家控制器重定向回游戏'show'动作。
  3. 用户流程运行良好(播放器已更新且用户显示在游戏节目页面中),但最终提交时浏览器中的URL仍显示“www.server.com/players/:id”。如果我在浏览器上点击刷新,它将转到播放器的show动作(如URL所示),而不是刷新当前在屏幕上的游戏/节目内容。

    解决此问题的首选方法是什么?

    游戏控制器:

    def create
      @game = Game.new(params[:game])
      if @game.save
        redirect_to edit_player_path (@game.players.first)
      else
        render 'new'
      end
    end
    

    玩家控制器:

    def update
      @game = current_game
      @player = @game.players.find(params[:id])
      if @player.update_attributes(params[:player])
        redirect_to @game
      else
        render 'edit'
      end
    end
    

    答复后续问题:

    current_game是一种检索游戏的辅助方法(与Rails Tutorial http://ruby.railstutorial.org/chapters/sign-in-sign-out相同的设计)

    def current_game
      @current_game ||= Game.find_by_remember_token(cookies[:remember_token])
    end
    

    routes.rb中:

    root to: 'static_pages#home'
    get "static_pages/home"
    
    resources :games
    resources :players
    resources :sessions, only: [:new, :create, :destroy]
    

    更新:

    我想我已经缩小了问题范围。它与jquery_mobile_rails有关。

    我能够通过创建一个带有2个脚手架的新项目并在控制器中设置路由来重现行为,如上所述。无需JQM即可正确更新URL。当我添加jquery_mobile_rails gem并执行POST时,URL不再更新。

    网上有关于此的进一步讨论(见下面的链接),但到目前为止我无法找到解决方案:

    Rails jquery mobile Routing/Rendering Issue

    http://forum.jquery.com/topic/restful-resources-rails-3-and-jquery-mobile

0 个答案:

没有答案