开发者

How to create a nested form in Rails 3 that works? ( I'm getting a routing error. )

I have a Client and ProposalRequest model that look like this:

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

class ProposalRequest < ActiveRecord::开发者_JAVA技巧Base
  belongs_to :client

end

In my my routes file, I included the nested routes, as usual.

resources :clients do
  resources :proposal_requests
end

And this is my form so far:

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

But after this, I'm stuck because of this error.

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>}

Can anyone help me puzzle out this error?


The problem is that your nested route is meant to add a new ProposalRequest to an existing Client. If you want to create a Client and a ProposalRequest at the same time, you need to just use new_client_path and semantic_form_for @client do |f|.

I would recommend you do the following in your clients_controller:

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

And in your view:

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

Hope this helps. Make sure to look at all the examples at https://github.com/justinfrench/formtastic and do some trial and error to get your form how you want it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜