如何RESTful-ize复杂的控制器

Jor*_*rdi 3 rest ruby-on-rails

我有一个带有动作的控制器:

class GameController < ApplicationController
before_filter :set_titles

def prestart
end

def wait
end

def play (game)
end


def button
end

def finish
end


def set_titles
end
Run Code Online (Sandbox Code Playgroud)

set_titles将获取页面标题(以及所有操作的其他常规属性)所有其他操作都会检查某些内容并呈现视图.

如何RESTful-ize这个.我只能想到创建一个Wait_player控制器,一个play_game控制器等,所有这些只会有一个show动作.但这看起来很笨拙,更难以在同一个控制器中遵循所有这些相关的操作.

Eth*_*han 5

首先,我会考虑RESTful设计是否是此控制器的最佳选择.有些域名并不能很好地适应REST,如果你试图将它们插入其中,那么就会增加工作和混乱.我不太清楚你的应用程序可以回答这个问题,但这是值得思考的问题.

如前所述,REST涉及名词.看看你发布的内容,我看到的主要名词是游戏.所以为了使它成为RESTful,你所谓的"预启动"可能是new你的"游戏" create."完成"可能是destroy."等待"可能只是"等待".并非RESTful控制器中的每个操作都必须是标准的七个操作之一.我不认为有任何RESTful相当于"等待".

你也有按钮.如果不了解更多关于你的应用程序的话,很难说,但也许应该得到自己的控制器.通常使用RESTful Rails应用程序,每个不同的实体都会使用七个标准操作中的一个或多个来获取自己的控制器.

"如何RESTful-ize这个.我只能想到创建一个Wait_player控制器和play_game控制器等."

这种方法更像是考虑为每个你想要做的动作创建一个控制器.Intead,尝试为每个想要操作的事物考虑一个控制器.例如,代替WaitPlayer控制器,使之成为Player与控制器show,new,create,等(标准的RESTful动作),然后另外一个可能wait动作.