1

Rails3.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は醜くて大きくなっています(3つのgで確認してください)。

どうすればコントローラーを美しくすることができますか?server_detailsのようなメソッドを配置する適切な場所はどこですか?

4

2 に答える 2

1

routes.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 に答える