这个问题相对简单但不太局部,因为它可以外推到很多控制器动作。
我有一个游戏控制器。
它(游戏)有很多行星。
到目前为止,我对每个控制器中的内容感到困惑。我认为必须有一个轨道方式来做它,这将保持行星控制器中的行星动作,但我不知道该怎么做。
编辑(注意这还不是游戏玩法):
更具体地说,这是对我坚持的问题的更好描述。我不确定如何对其进行编码(或者如果这是一种非常有效的方法)
所以在这个例子中,我理解前两点和最后一点。但我不明白重定向是否有意义
游戏控制器:
def play
game = Game.find(params[:id])
# do stuff
redirect planets_path(game)
end
行星控制器:
def index(game)
@planets = game.planets
end
def show
@planet = Planet.find(params[:id])
end
实例变量将用于相应的视图中。此外,planets_path将链接到路径文件中的行星索引控制器。
答案 0 :(得分:1)
重定向是有道理的。 Rails惯例是以RESTful方式构建资源。因此对于游戏资源,它将具有“播放”的动作。该动作执行其逻辑(我假设它将是游戏的设置逻辑)然后将指导用户自己启动游戏。如果这个初始页面是可用行星列表,那么将它们重定向到planets_path是有意义的。
也许你应该重定向到GameController #show?如果用户在开始播放后可以执行其他操作,我会这样做。否则,我会将此操作用于配置和有关游戏本身的其他信息,并为Game和Planet控制器提供可玩的操作。
如果你在游戏中将星球设为nested resource,那么路线就像game_planets_path(game)
一样,/games/1/planets
的网址为PlanetsController#index
,game_planet_path(game, planet)
的网址为/games/1/planets/1
Planetscontroller#show
的网址{{1}}。这有助于了解这些行星属于那个游戏。
答案 1 :(得分:0)
这里Association Basics您将找到Rails中所有关联类型的示例以及如何使用它们
答案 2 :(得分:0)
像骨干这样的前端js框架可能是一种解决方案。
它使用后端以json格式检索数据,然后更新视图。
这样你就可以将所有行星的行为保留在行星控制器中,只需将json格式的响应实现为API。