I have a question about using link_to in template and in console
Say I do rails new blah, I make a model called User, I make a table users, each user has a field called 'name'. I have resources :users, in config/routes.rb And I add some users.
in template, I can do
<% @z=User.find_by(name:"bob") %>
<%= link_to 'aaa',@z %>
I understand that it will take that variable @z which is a reference to a user, and will convert it to user_path(@z.id)
And I can do for example
<%= link_to 'aaa',user_path(@z.id) %>
And in the console, I can say
>puts app.user_path(1)
/users/1
But I notice that in the console I can't do that shorthand as shown above with @z
I can say
irb(main):003:0> helper.link_to("aaa",app.user_path(4))
=> "<a href=\"/users/4\">aaa</a>"
#<User id: 3, name: "bob">
irb> user=User.find_by(name:"bob")
irb(main):005:0> helper.link_to("aaa",user)
Traceback (most recent call last):
1: from (irb):5
ArgumentError (arguments passed to url_for can't be handled. Please require routes or provide your own implementation)
irb(main):006:0>
And also, I notice that in the template, while I can say user_path(@z.id), I can't say app.user_path(@z.id)
Why is it that in the console, I can't use that shorthand of writing @z or user, in a link_to, with that variable as an argument, when that variable points to a user. Whereas I can in a template.
And why is it that in a template, I can't refer to app.user_path only to user_path ?
Thanks
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
.
.
.
.