5

オプションのモデルを使用して、あるフォームを別のフォームにネストできるようにするために、コントローラーと実際のフォームの両方を書くのにまだ苦労していますか?

多くの連絡先を持つメッセージがあります

メッセージを送信するときに、オプションで連絡先を追加したい。

例としてこれがあります:

= simple_form_for Message.new, :remote => true do |f|
  #message_form
    = f.error_messages
    %p
      = f.input :account_name, :url => autocomplete_account_name_messages_path, :size => 40, :as => :autocomplete
    %p
      = f.input :topic, :required => true,
                :input_html => {:size => 30}

    #add_contact_btn
      = link_to "Add Contact"

      #contact_form
        = f.simple_fields_for :contactd do |fc|
        = fc.input :email
        = fc.input :first_name
        = fc.input :last_name

    = f.submit 'Give'
    = f.submit 'Request'

Message.rb モデルの場合、次のものがあります。

has_many :contacts
accepts_nested_attributes_for :contacts, :reject_if =>:all_blank

注: simple_fields_for で :contacts を使用したときは機能しなかったため、特異です。しかし、accepts_nested_attributes_for の場合は逆です。

メッセージの作成コントローラーに、message.contacts.build を含めました。

しかし、現在、私はまだゼロの連絡先を生成しています.

これは、Google Chrome からフォーム データとして渡されたものです。

message%5Baccount_name%5D:McKesson
message%5Btopic%5D:testing a contact
message%5Bbody%5D:testing this
sender_id:
receiver_id:23
message%5Bcontacts%5D%5Bemail%5D:888@gmail.com
message%5Bcontacts%5D%5Bfirst_name%5D:Ang
message%5Bcontacts%5D%5Blast_name%5D:Name
4

4 に答える 4

8

正しいメソッド名はsimple_fields_for(複数形に注意)

f.また、 simple_form オブジェクトで呼び出すには を保持する必要があります

于 2011-07-08T19:54:33.630 に答える
4

cocoon (ネストされた要素を動的に追加/削除するために作成した宝石) と組み合わせて、単純なフォームでネストされたフォームを使用する方法を示す小さなプロジェクトがあります。

プロジェクトはgithubにあります。

お役に立てれば。

于 2011-07-14T21:44:43.093 に答える
0

ネストされたフォームで同様の問題に直面しました。JustinRoR で提案されているように、attr_accessible:contacts_attributes を定義する必要があります。

Rubyコンソールでハッシュをテストできるはずです(これを試したかどうかはわかりません)。params[:message] を印刷し、これを使用して Message.new(params[:message]) のようなコンソールからメッセージを作成することをお勧めします。(params[:message] は、params[:message] ハッシュを出力することで得られることに注意してください)。

コンソールで動作すると、魅力的に動作するはずです

于 2011-07-19T21:15:12.500 に答える
0

メッセージの作成コントローラーに、message.contacts.build を含めました。

しかし、現在、私はまだゼロの連絡先を生成しています.

Message.rb モデルに、属性も受け入れる機能を追加してください。

class Message < ActiveRecord::Base
    attr_accessible :contacts_attributes
    has_many :contacts
    accepts_nested_attributes_for :contacts

あなたの質問に完全には答えていないことはわかっていますが、これだけだったのかもしれません。私のプロジェクトに関しては、 を含めないと nil が返さ:contacts_attributesれます。私の場合、製品を扱っています。今のところ単純なフォームを使用していない場合でも、これが役立つことを願っています!

于 2011-07-16T03:04:12.587 に答える