質問

そんな形で私のレールアプリを使用するカスタムFormBuilderを与えてくれるカスタムフィールドタグ

<% form_for :staff_member, @staff_member, :builder => MyFormBuilder do |f| %>
[...]
    <%= render :partial => "staff_members/forms/personal_details", :locals => {:f => f, :skill_groups => @skill_groups, :staff_member => @staff_member} %>  
[...]
<% end %>

現在、この部分があるエリアの形式を取得するに置き換えにより、AJAXのコールバック.私が終わってからのコントローラに対応し、AJAXの要求は:

render :partial => "staff_members/forms/personal_details", :locals => {:skill_groups => @skill_groups, :staff_member => @staff_member}

しかし、場合にしたいと思っているならその後の休憩にFormBuilderオブジェクトを使って、form_forアクセスすることができませんそのために使えるようになったのでカスタムFormBuilderオブジェクト内の一部に使用AJAXコールバック?

役に立ちましたか?

解決

あなたの部分の内側にfields_forを使用してください。これは、同様のタスクを実行しますが、フォームタグをラップなし。 APIドキュメントを参照してください。

他のヒント

これはどう?

  @template.with_output_buffer do
    @template.form_for @model_object do |f|
      f.fields_for :some_nested_attributes do |ff|
        render :partial => 'nested_attributes', :object => @model_object, :locals => {:form => ff}
      end
    end
  end

これは特に有用であろうと、あなたは、部分的に入れ子になったfields_forを使用する必要がある。

それは一種のお粗末な私には感じているものの、

あなたは、コントローラでフォームビルダの新しいインスタンスをインスタンス化できます:

# in the controller
render :partial => {
  :f => MyFormBuilder.new(:staff_member, @staff_member, template),
  :skill_groups => @skill_groups,
  :staff_member => @staff_member
}

また、あなたはまったく何もレンダリングを心配する必要はありません、クライアント側であることを更新ロジックの多くを移動することができます。あなただけのJSを経由して値を更新することができます。それはしかし、あなたのプロジェクトのために動作するかどうかわからない。

たぶん私はここにゲーム内で少し遅れだし、多分私が正しく質問を理解していないが、ApplicationHelper.rbに、私はあなただけの行を追加することができると思います:

ActionView::Base.default_form_builder = MyFormBuilder

お問い合わせください内でajaxのコンテンツのf.object_nameでも動作し項を網)を使って描画タグの定義 http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html 広い範囲にわたって最初の引数です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top