2016-08-31 9 views
0
Controllers 
-concerns 
    -application_controller.rb 
    -display_controller.rb 

Helpers 
-application_helper.rb 
-display_controller.rb 

ヘルパーファイルをaccrodingにdisplay_controller.rbのRails:コントローラはdisplay_helper.rbで

class DisplayController < ApplicationController 
    include ApplicationHelper 
    include DisplayHelper 

    def update 
     @c = is_c 
    end 

end 

module DisplayHelper 
     def is_c 
      a + b 
     end 
    end 

の方法を見つけることができない私は更新アクション作品で@c = is_cをしたい場合は、問題がありますコントローラでinclude DisplayHelperを実行する必要があります。そうしないと、is_cの結果を@cに割り当てることができません。ヘルパーファイルの通常のメソッドは、コントローラをインクルードすることなく使用することができますが、このリソースでは動作しません。

+0

ヘルパーは、これをコントローラに含める必要がある場合は、 'include'や' helper'メソッドが利用できるようにするためのビューです。それは、私が「援助者」の有用性を大いに信じているわけではないと言われています。彼らはグローバルなあいまいさを作り出すことができます。 – engineersmnky

+0

@engineersmnkyあなたの答えをありがとう。私のアプリケーションがより複雑になるにつれて、コントローラ内のコードもまた固まってしまいます。ヘルパーファイルを移動しなければ、コントローラのコードを減らす方法を知っていますか? –

+0

おそらく、レールのSRPデザインパターンの最も有益なブログ記事の1つhttp://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ – engineersmnky

答えて

0

このようなモジュールを使用している場合は、インスタンスでis_cを呼び出す必要があります。つまり、そのインスタンスに関連付けられたクラスにDisplayHelperを含める必要があります。あなたは、インスタンス上でそれを呼び出すにしたくない場合は

、あなたがSELFにis_c定義することができます。

はこれを試してみてください:

DisplayHelper.is_c 
:コントローラで

module DisplayHelper 
     def self.is_c 
      a + b 
     end 
end 

コメントだけを理解できない場合、私は説明しようとします。私はそれが意味をなさないことを願っています。

関連する問題