我有一个Scouts模型,除了标准的REST动作check_in和check_out之外,还需要两个动作。所以我的路线是:
resources :scouts do
member do
get 'check_in'
get 'check_out'
end
end
但是我需要向用户显示show.html,其中包含指向scout或check_out侦察的链接。为了利用相同的show.html视图并在ScoutsController中只保留一个show动作,我将?mode=check_in
或?mode=check_out
附加到url以指定这不是常规的show动作,因此显示“Check”在“和”签出“链接。
我考虑过创建一个check_in
和check_out
资源,但这似乎不适合REST的模型,因为签入/签出是一个操作而不是资源。
有没有更好的方法来处理这个RESTful?
更新:该模式来自具有不同议程(即工作流程)的不同用户。一个用户可能需要显示和编辑Scout数据,而另一个用户只能执行check_in
个活动。
但是,执行check_in
活动的用户可能需要进行编辑。例如,执行check_in
活动的用户可能会发现Scout数据中的错误,通过编辑进行修复,然后返回其check_in
活动。通过mode
可以让我确定用户议程。此外,添加mode
允许我只使用一个show / edit / etc视图,只显示基于它的相应链接。
我可以将模式放在会话哈希中。无论哪种方式,结果相同。
好处是一个非常简单的用户界面(对于非常简单的用户)。
我觉得Scout是资源,而check_in
和check_out
就是行动。但使用该模式似乎很尴尬。但也许它真的是最好的方式。那是我的问题。
答案 0 :(得分:0)
在我看来check_in和check_out与注册有关,所以我认为你需要另一个资源进行注册。 check_in将映射到create,check_out将映射到destroy。
resources :registrations
match 'check_in', :to => "registrations#create", :as => "check_in"
match 'check_out', :to => 'registrations#destroy', :as => "check_out"