【发布时间】:2013-03-20 17:51:23
【问题描述】:
我的客户要求提供一个 URL 来完成其应用程序中的工作流程:example.org/task/:token。其中:token 是该任务的唯一ID。
在index 动作中的TaskController 内,:token 用于查询任务对象,并根据任务的当前状态呈现视图:
def index
@task = Task.where(token: params[:token])
render @task.state.to_s
end
每个状态都有一个视图,渲染视图的逻辑在视图本身中(丑陋!!)。
我想重构它,以便使用任务状态来确定要呈现的控制器操作。我可以用render template: '#{state}/action' 做到这一点。但这不会执行控制器动作逻辑。这意味着我仍然坚持视图中的控制器逻辑!
我发现 this solution 有效,但它有点难看,并且打破了一些“神奇”的轨道(必须显式渲染视图。)
我的问题是,有没有更好的方法可以在 Rails 中完成此任务,同时仍保持单个 url 而不会重定向到新的 url?
【问题讨论】:
-
也许客户端javascript是一个选项?
标签: ruby-on-rails ruby ruby-on-rails-3