This is because your models are included in other class Finance, and it is very 
possible for developer to make a mistake understanding of paths or whatever 
stuff which uses .model_name of your classes.

In your case, the concern is - route:

namespace :finance do
 resources :bill_recs do
   resources :bill_rec_off
 end
end

generated 'finance_bill_rec_bill_rec_off_path()' - thats right in 'namespace' 
logic. 

'finance' part in this route is just because you pass the argument 'namespace' 
and not because your model_name is 'finance_bill_rec'. 
But the <%= form_for([@bill_rec, @bill_rec_off]) do |f| %> uses 
.polymorphic_path() method, and returns you 
'finance_bill_rec_finance_bill_rec_offs_path'. Twice 'finance' in that case is 
because .model_name returns 'finance_bill_rec' and 'finance_bill_rec_off' - 
thats the clear and real path name you should implement.

Yeah, we'd better always let Rails operate on their own methods, hidden from 
us, like .model_name() or .polymorphic_path(). 

Ok, working with route:
'namespace :finance do ..' - is this really what you looking for? I think you 
just want to operate with your models under browser's string '/finance/...', 
right? Try another approach for that:

resources :bill_recs, :path => '/finance' do
 resources :bill_rec_off
end

OR

scope "/finance" do
 resources :bill_recs do
   resources :bill_rec_off
 end
end


Anyway, you should implement 'finance_bill_rec_finance_bill_rec_offs_path' 
without 'namespace'


On 30.07.2012, at 2:08, Marcelo Junior <[email protected]> wrote:

> I have the follow models in Finance module:
> 
> class Finance::BillRec < ActiveRecord::Base
> ...
> has_many :bill_rec_offs, :dependent => :destroy
> ...
> end
> 
> class Finance::BillRecOff < ActiveRecord::Base
> ...
> belongs_to :bill_rec
> ...
> end
> 
> I'm doing this on my form_for:
> 
> <%= form_for([@bill_rec, @bill_rec_off]) do |f| %>
> ...
> <% end %>
> 
> routes.rb
> 
> namespace :finance do
> resources :bill_recs do
>   resources :bill_rec_offs
> end
> end
> 
> And the error:
> 
> undefined method `finance_bill_rec_finance_bill_rec_offs_path' for
> #<#<Class:0x000000070757e0>:0x0000000708bec8>
> 
> However, the route finance_bill_rec_bill_rec_off_path(@bill_rec_off)
> works well.
> 
> How can I do on a form_for with namespace and nested routes with module?
> 
> -- 
> Posted via http://www.ruby-forum.com/.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to