我的客戶已經要求一個URL來完成其應用程序中的工作流程:example.org/task/:token
。其中:token
是該任務的唯一ID。Rails 3多個控制器的單個url
內的index
行動:token
的TaskController
用於查詢任務對象和視圖是基於任務的當前狀態呈現:
def index
@task = Task.where(token: params[:token])
render @task.state.to_s
end
每個州都有渲染視圖的視圖和邏輯在視圖中(UGLY !!)。
我想重構這個,以便使用任務狀態來確定要呈現哪個控制器動作。我可以用render template: '#{state}/action'
來做到這一點。但是這不會執行控制器動作邏輯。這意味着我仍然堅持視圖中的控制器邏輯!
我發現this solution這樣的作品,但它是一個有點難看,打破一些軌道的「神奇」(必須明確地渲染視圖)。
我的問題是,是否有更好的方法來做到這一點在Rails內仍然保持單個網址,而不是重定向到一個新的網址?
也許客戶端JavaScript是一個選項? – tmaximini 2013-03-20 18:33:15