0

テンプレートを使用してビューによって定義されるなど、動的コンテンツを含むフォームを含む汎用テンプレートを作成しようとしました。(現在の impl. は、レンダリング中にf (フォームビルダー) が定義されていないことをビューが訴えるため、失敗します。

[Rails 1.9.6] 「LAY」という私のテンプレート

  <%= form_for @q_object, :url => request.fullpath do |f|%>
    <!--Do something that happens on every page --> 
    <table>
      <%= yield %>
      <tr><td style="text-align: center">
          <%= f.submit "Submit" %>
        </td></tr>
    </table>
  <%end%>

私の見解

<tr><td>
  <%= f.text_area :txt, :rows => 6, :cols => -1, :style => "width:100%" %>
 </td></tr>

私のコントローラー

class Controller < ApplicationController
  layout "LAY"

私の問題 ビューレールのレンダリング中に、 f (フォームビルダー) が定義されていないと不平を言います。

私は何か間違ったことをしていますか (明らかに)、実装のアイデアに固執するにはどうすればよいですか?

4

2 に答える 2

0

なぜこれをレイアウトにする必要があるのですか?それをテンプレートにして、必要なフォームの個々のタイプごとに部分的なテンプレートを作成することができます。これを行うと、個々のパーシャルをこのようにレンダリングして、フォーム ビルダーに渡すことができます。

<%= render :partial => @unique_fields_name, :locals => {:f => f} %>

私は部分的なテンプレートを使用しますが、部分的なレイアウトを本当に使用したい場合は、この質問の 2 番目の回答を確認してください。部分レイアウトの設定方法を説明します。また、RailsGuidesにはレンダリング レイアウトに関する優れたセクションがあり、おそらくチェックアウトする必要があります。

于 2013-03-12T00:34:28.353 に答える
0

I found it is pretty simple: just create form_for in the template and use fields_for in the view. Fields_for gives you a formbuilder, but does not create the html-form...

<%=fields_for @q_object, nil, {:builder => MyFormBuilder} do |f|%>
      <%= f.text_area :txt, :rows => 6, :cols => -1, :style => "width:100%" %>
<%end%>

PS: I found NO way in passing parameters from the template to the view, like <%= yield AweSomeParameter %>...

于 2013-03-12T15:11:11.693 に答える