1

我对 Rails 3.2 有点迷茫。我曾经使用以下方法在 Padrino 中创建瘦控制器:

 15   post :task, :provides => :js do
 16     result = execute(params)
 17     render "home/task"
 18   end

某些方法并不完全与模型交互。在 Rails 3.2 中,我不能在控制器中使用帮助器来使它们变得干净(如 Rails 2.x 或 Padrino)。我已经创建了一些这样的方法:

 10   def show                                                                                                                                               
 11     @server = server_details                                                                                                                             
 12     respond_with(@server) if request_match_server_address?                                                                                               
 13   end     

但是将代码从 ServersController 移到了 ApplicationController,假设它是临时的,现在 application_controller 又丑又大(肯定有三个 g)。

如何让我的控制器美观?放置 server_details 等方法的正确位置在哪里?

4

2 回答 2

1

在路线.rb

post "/task", to: "tasks#show"

在 tasks_controller.rb

respond_to :js
def show
  @result = execute(params)
  respond_with @result
end

这将自动使用视图tasks/show.js

祝你好运

于 2012-11-04T20:44:56.073 回答
0

montrealmike 的答案是如何将您的 Padrino 转换为 Rails 3。

但是要回答您提出的问题(使用“?”),
您可以在 Rails 3 中使用帮助程序,因为只有普通的 ruby​​ 模块。

你只需要包括它们:

include ServerHelper
def show
  @server = server_details
  respond_with(@server) if request_match_server_address?
end

你在哪里有 app/helpers/server_helper.rb

module ServerHelper do
  def server_details
    ...
  end
  def request_match_server_address?
    ...
  end
end

编辑:您也可以将它们包含在 ApplicationController 中,它们将像所有其他好的小类一样被继承。

于 2013-07-02T16:43:22.003 回答