3

次のようなClientモデルとProposalRequestモデルがあります。

class Client < ActiveRecord::Base
  has_many :proposal_requests
  accepts_nested_attributes_for :proposal_requests, :allow_destroy => true
end

class ProposalRequest < ActiveRecord::Base
  belongs_to :client

end

ルートファイルには、いつものようにネストされたルートを含めました。

resources :clients do
  resources :proposal_requests
end

そして、これはこれまでの私のフォームです:

-semantic_form_for [Client.new, ProposalRequest.new] do |f|
   =f.inputs
   =f.buttons

しかし、この後、私はこのエラーのために立ち往生しています。

No route matches {:controller=>"proposal_requests", :client_id=>#<Client id: nil, name: nil, title: nil, organization: nil, street_address: nil, city: nil, state: nil, zip: nil, phone: nil, email: nil, status: "interested", how_you_heard: nil, created_at: nil, updated_at: nil>}

誰かが私がこのエラーをパズルで解くのを手伝ってもらえますか?

4

1 に答える 1

2

ProposalRequest問題は、ネストされたルートが既存のに新しいものを追加することを意図していることClientです。ClientProposalRequestを同時に作成したい場合は、new_client_pathとを使用するだけsemantic_form_for @client do |f|です。

私はあなたがあなたの中で次のことをすることをお勧めしますclients_controller

def new
  @client = Client.find(params[:id])
  @client.proposal_requests.build
end

そしてあなたの見解では:

semantic_form_for @client do |f|      
  = f.inputs # fields for client
  = f.inputs :name => 'Proposal Request', :for => :proposal_requests do |pf|
    = pf.input :some_proposal_request_attribute
  = f.buttons

お役に立てれば。https://github.com/justinfrench/formtasticですべての例を確認し、試行錯誤してフォームを希望どおりに取得してください。

于 2010-12-08T06:46:25.553 に答える