0

ヘルパーをコントローラーで使用できるようにする方法があることは知っていますが、これは一般的に悪い形式です。これを回避するには、次の作業をどのようにやり直す必要がありますか?

連絡先の名前と姓を組み合わせた「フルネーム」という名前の連絡先ヘルパーがあります。

サブヘッダーと呼ばれるレイアウト パーシャルがアプリケーション レイアウトでレンダリングされ、次のコードが含まれます。

<section id="subheader"><%= @subheader %></section>

コントローラーは @subheader の値を設定します。

問題は、@subheader に「フルネーム」が必要になることが多いことです。ただし、これはコントローラーからヘルパーにアクセスすることを意味します。この fullname メソッドは別の場所に存在する必要がありますか?

4

2 に答える 2

2

fullname のようなものを使用して、通常はモデル自体でメソッドを定義するだけです。

fullname メソッドがある種の HTML フォーマットを行う場合、それらの部分をヘルパー内に保持します。

于 2010-12-15T17:59:19.577 に答える
1

あなたの質問のタイトルは、別の答えを探している視聴者を引き付けるかもしれないので、「私のコントローラーで Rails ヘルパーを使用できますか?」という質問に答えます。これには正当な用途があるため、これを行う最もクリーンな方法を次に示します。

ヘルパー ファイルで、次のようにモデルでアクセスするコードをラップします。

module HelperModuleName
  [helper code here]
end

コントローラーで使用する必要のあるコードのみをラップする ( を使用してすべてのヘルパーを含めるのではなくinclude ApplicationHelper) ことは良い考えです。これにより、メソッド名が衝突する可能性が減り、コントローラーでヘルパーを使用する選択についてより慎重にならざるを得なくなります。

モジュールを application_controller.rb に含めます。

class ApplicationController < ActionController::Base
  protect_from_forgery
  include HelperModuleName
end
于 2011-10-17T20:53:11.503 に答える