我的客户已经要求一个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