Forum: Ruby on Rails What's my problem ? named resources

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
François B. (Guest)
on 2007-03-14 17:35
(Received via mailing list)
Hi all,

I really have a bad problem.  I can't make named resource paths to work.

If I use this:
def test_can_show
  get :show, :party_id => @bob.id, :id => @address.id
  assert_select
"\#address_contact_route_#{@address.id}_line1_edit[url=?]",
      address_path(@bob, @address, :txt)
end

I get a big bang error:
  1) Error:
test_can_show(AddressContactRoutesControllerTest::PartyWithAddressTest):
NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.to_sym
    /home/francois/src/xlsuite.org/config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/hash/keys.rb:27:in
`symbolize_keys'
    /home/francois/src/xlsuite.org/config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/inflector.rb:250:in
`inject'
    /home/francois/src/xlsuite.org/config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/hash/keys.rb:26:in
`each'
    /home/francois/src/xlsuite.org/config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/hash/keys.rb:26:in
`inject'
    /home/francois/src/xlsuite.org/config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/hash/keys.rb:26:in
`symbolize_keys'
    /home/francois/src/xlsuite.org/config/../vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:95:in
`rewrite_path'
    /home/francois/src/xlsuite.org/config/../vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in
`rewrite'
    /home/francois/src/xlsuite.org/config/../vendor/rails/actionpack/lib/action_controller/base.rb:522:in
`url_for'
    (eval):19:in `address_path'
    /home/francois/src/xlsuite.org/config/../vendor/rails/actionpack/lib/action_controller/test_process.rb:451:in
`send'
    /home/francois/src/xlsuite.org/config/../vendor/rails/actionpack/lib/action_controller/test_process.rb:451:in
`method_missing'
    ./test/functional/address_contact_routes_controller_test.rb:47:in
`test_can_show'

My route is properly defined in routes:
map.resources :parties, :path_prefix => "/admin" do |parties|
  parties.resources :addresses, :controller => "address_contact_routes"
end

So, what's my error ?  Can anyone spot it ?

Thanks !
--
François Beausoleil
http://blog.teksol.info/
http://piston.rubyforge.org/
Jodi S. (Guest)
on 2007-03-14 17:47
(Received via mailing list)
On 14-Mar-07, at 11:32 AM, François Beausoleil wrote:

>       address_path(@bob, @address, :txt)
> end
>

> My route is properly defined in routes:
> map.resources :parties, :path_prefix => "/admin" do |parties|
>   parties.resources :addresses, :controller =>
> "address_contact_routes"
> end
>
> So, what's my error ?  Can anyone spot it ?

hey François (welcome back from vacation),

I've seen that with multiple params to the url helpers - I've solved
it by identifying the required params with a symbol.

so address_path(:address_id => @address, @bob, :txt) # is :txt the
respond_to format?

this is the general solution, but you may have to add symbols to
other params.

cheers,
Jodi
François B. (Guest)
on 2007-03-14 18:15
(Received via mailing list)
Hello Jodi,

2007/3/14, Jodi S. <removed_email_address@domain.invalid>:
> I've seen that with multiple params to the url helpers - I've solved
> it by identifying the required params with a symbol.
>
> so address_path(:address_id => @address, @bob, :txt) # is :txt the
> respond_to format?
>
> this is the general solution, but you may have to add symbols to
> other params.

Thanks for your response.  In fact, I found my solution for a slightly
related problem.  You can get the gory details on my blog:

http://blog.teksol.info/articles/2007/03/14/named-...

The solution was to use the correct named route:

  formatted_address_path(@address, @bob, :txt)

is the route to use.

Thanks for your time, Jodi.
--
François Beausoleil
http://blog.teksol.info/
http://piston.rubyforge.org/
This topic is locked and can not be replied to.