【问题标题】:Need some advice on doings things the Rails way需要一些关于以 Rails 方式做事的建议
【发布时间】:2011-10-19 14:47:11
【问题描述】:

我已经构建了一个非常简单的 Rails 应用程序……您向某个网页发送请求,它会自动生成报告并将其保存到服务器上的本地文件中。生成的报告默认为当天创建。我想做的是允许用户在 url 中输入他们希望生成报告的日期,以便将我的小技巧小马变成更有用的东西。

就目前而言,我已将所有有用的报告生成代码构建到主控制器的索引操作中,但不禁觉得它确实属于模型而不是控制器,但我'我不太确定如何进行转换。

非常感谢您经验丰富的 Rails 兽医的任何建议。

谢谢。

我的索引操作中的代码.... 基本上,索引操作被调用,我的程序确定今天是哪一天,然后使用日期向另一个 API 发出请求,然后以对象的形式返回必要的信息。然后我简单地浏览对象,收集我需要的信息并使用该信息生成一个文本文件。家庭控制器的视图只是打印一条消息,说明报告已生成并提供它的路径。

我想强调的是,我想使用类似 mysite.com/report/20110803 的 URL 向我的控制器提供有关报告应运行的日期的信息。

【问题讨论】:

  • 您能否向我们展示您的索引操作中的代码?如果您向我们展示您的代码,您将获得更具体/更好的建议。
  • @mischa 我试图添加更多关于代码的解释

标签: ruby-on-rails model-view-controller design-patterns


【解决方案1】:

您正确地认为此代码属于模型。理想情况下,报告模型。控制器通常应该只为视图提供实例变量、处理 Flash 消息等。逻辑应该在模型中。

也就是说,我会这样做:创建一个模型方法来生成您想要的报告。然后,在控制器中执行该方法并根据传递给模型方法的时间戳取回您想要的报告。

然后,在控制器中会有这个:

redirect_to new_report_url, :stamp => the_stamp_value

我想你明白了。你只需要一个简单的路线,期望一个邮票价值,你很高兴:)

【讨论】:

  • 为了解决路由问题,我会在 routes.rb 文件中将报告声明为资源吗?
  • 您可能应该将其移出 HomeController 并创建一个包含标准 RESTful 路由的 ReportsController(仅您需要的路由)和然后你可以在 routes.rb 文件中做resources :reports。如果您在 ReportsController 中只有 createindexshow 操作,那么您可以添加 resources :reports, :only => [:create, :index, :show] 例如。
  • +1 iWasRobbed 说得对。学习如何手动编写路线是个好主意。这很容易,而且了解后台路由中究竟发生了什么是值得的。
猜你喜欢
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2013-07-02
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多