0

コードを見ると、次の行があります。

<%= render :partial => 'ingredients/form',
           :locals => {:form => recipe_form} %>

実際に何が起こっているのだろうか。

  1. renderの一部であることに気づきましたRenderingHelper。書き込み中に使用できるオブジェクトを知るにはどうすればよいですか?RenderingHelperJavaのようにプレフィックスなしで使用するにはどうすればよいですか(つまりRenderingHelper.render)。フォームビューでそれを継承していますか?

  2. JavaとC#を知っているのでingredients/form、コードで検索しましたが見つかりませんでした。設定より規約の一部だと思います。それは何ですか?それはどこで定義されていますか?

  3. 行に関して、:locals => {:form => recipe_form}それはパラメータがに送信されrenderますか?それは二重の割り当てですか?=>オペレーターは実際にここで何をしますか?

  4. それがパラメータである場合、render署名から理解するのは困難でした:

    オプションハッシュによって指定されたレンダリングの結果を返します。主なオプションは次のとおりです。

    • :partial-を参照してくださいActionView::PartialRenderer
    • :file-明示的なテンプレートファイル(これは以前のデフォルトでした)をレンダリングし:locals、それらを渡すために追加します。
    • :inline-コントローラーで行われるのと同様のインラインテンプレートをレンダリングします。
    • :text-渡されたテキストをレンダリングします。
4

2 に答える 2

1

今後は、投稿ごとに 1 つの質問をするようにしてください。

  1. RenderingHelperはモジュールであり、そのメソッドはincludeどこかを介して利用可能になります。Ruby のモジュールがどのように機能するかについて詳しくは、こちらをご覧ください。
  2. 部分的なファイル名には常にアンダースコアが付けられます。部分的なファイルは次の場所にあります。app/views/ingredients/_form.html.erb
  3. :formとはどちらも:localsrender に渡されるオプション ハッシュのキーです。の対応する値:localsはネストされたハッシュで、1 つのキーを含み、:formその値は という名前のローカル変数ですrecipe_form。オプションの句読点のいくつかを明示的に指定すると、これはより明白になる可能性があります。

    <%= render({:partial => 'ingredients/form', :locals => {:form => recipe_form}}) %>
    
  4. Ruby (および具体的には Rails) は、キー/値ハッシュの形式で引数の可変長リストを使用します。基本的な構文を理解すれば、それらを使用したり理解したりするのは難しくありません。

于 2012-06-15T21:11:47.250 に答える
0

2. "ingredients/form"コードではありません。文字列です。モデルの_formパーシャルを参照します。ingredientにありapp/views/ingredients/_form.erb.htmlます。

3. :locals => { ... }は、render関数がシンボル:localsをキーとしてマップ エントリを取得していることを意味します。renderそのマップをどうするか知っています。

「二重割り当て」ではなく、:localsキーの値マップです。=>、または「ハッシュ ロケット」は、マップ キーにマップ値を割り当てるための Ruby 1.8/1.9 構文です。Ruby 1.9 では、ショートカットlocals: { ... }.

(より読みやすいIMOは値に依存します-値がキーの場合、新しい構文は凶悪だと思いますが、そうでない場合は気に入っています。)

4.署名はどのようにわかりにくいですか? 引数はオプションのハッシュです。

于 2012-06-15T21:12:07.793 に答える