2016-12-10 1 views
1

私はコントローラからビューに変数を渡すことについて質問があります。 ベストプラクティス、パフォーマンス、そして最後に、ローカル変数で変数を渡す、または変数をインスタンス変数として渡す利点と欠点は何ですか?例:ビューのビュー:インスタンス変数を設定するか、地元の人々に渡す方が良いでしょうか?

controller.rb 
@string = "Some string" 

そして:

view.erb 
<%= @string %> 

またはより良いビュー内、その後

controller.rb 
render some_path, 
     :locals => { 
      :string => 'aww', 
     } 

とを渡す:

それはオブジェクトとなりますどのように
<%= string %> 

、ブーリアン?パフォーマンスに差異はありますか?より良い練習は何ですか?

よろしくRailsでは

答えて

2

、それはあなたの意見にインスタンス変数を渡すのがベストプラクティスです。 Railsの開発者はそれに慣れています。それはよく知られているので、入力が少なくて済みます。

私の個人的な好みは、ビュー変数をより明示的にするため、localsrenderに渡すことです。また、インスタンス変数を使用するときに "nil"例外を取得するのではなく、変数を誤って入力すると、 "メソッドなし"例外が発生するという利点があります。

どちらの場合でもパフォーマンスに大きな違いがあるとは確信していません。いくつかのベンチマークを実行するのは興味深いかもしれません。しかし、Railsを使用している場合は、レンダリング速度がおそらく最優先事項ではありません。

コントローラのインスタンスvarを使用してメソッドの結果をメモに書き出すと(高価な計算をキャッシュするなど)、そのインスタンスvarはビューに「リーク」することに注意してください。あなたはおそらくそれをあなたのビューには必要としませんでしたが、あなたはそれをまだ得ています(Railsはコントローラのインスタンス変数をビューに公開するためです)。したがって、ローカル変数を渡すことは、「私の視点はこの変数に依存している」ということをより明確に伝えることです。

+0

パーフェクト!これは私が期待している反応です。ありがとうございます。 –

関連する問題