Rails,从视图中以相同的方式调用同一个控制器的动作?

时间:2009-05-31 11:47:50

标签: ruby-on-rails

我正在开发一个应该有游戏的应用程序,当点击游戏时它会转到带有说明和其他内容的game.prestart。在那里我写道:

 link_to "Play", :controller => "games", :action => "wait"
等待将等待其他玩家,然后重定向到“播放”动作

这里有两个问题:

1.-这不是很安静,但我不知道如何做到安静,开始游戏(表演?)有3个阶段:预启动,等待和游戏本身

2.-上面的代码将给出“无后置动作等待”或类似的东西,如果我添加:method =>:得到我将获得无路由匹配。我有方法“等待”,视图已经创建。

3 个答案:

答案 0 :(得分:2)

  

除了默认路由之外,您还可以在RESTful路由中添加方法。查看3.3节,在此处添加更多RESTful操作。

实际上,你真正想要的是3.11

似乎您需要定义其他成员路由,这样您就可以使用以下方式生成路径:

wait_game_path(@game)

要生成会员路线,您需要修改routes.rb中的map.resources:games行,如下所示:

map.resources :games, :member => {:wait => :get}

这将为@game

的每个实例添加一个等待的新get动作

答案 1 :(得分:1)

以下是如何做到这一点:

  1. 致电行动。
  2. 搜索标记为待处理的会话。
  3. 如果找到会话,则将当前会话和找到的会话放到某个包装类中,并通知找到的会话接受游戏(推送包装类对象ID)。
  4. 如果未找到会话,则为播放器标记会话暂挂,并将用户重定向到“等待页面”。在“等待页面”上安排ajax调用,如果从其他会话接受游戏,将跟踪会话状态。
  5. 我希望这很有帮助。

答案 2 :(得分:0)

除了默认路由之外,您还可以在RESTful路由中添加方法。查看第3.3节“添加更多RESTful操作here