undefined method `name' ...........

Hi Community....

I'm new in this game, so this might be a easy question, but I have done my google, without result, so I will try this....

I'm learning ROR, and I'm using Patrick Lens 'Ruby on Rails' book. (This is written for ror 1.x - and I'm using NetBeans 6.1 - ror 2.x - this might be the problem...)

But...

I have made this Controller:

class StoryController < ApplicationController   def index     @current_time = Time.now     @s = Story.find_all_by_name('sitepoint')   end end

and this view:

<h1>Story#index</h1> hej <%= @current_time %> <%= @s.name%> <p>Find me in app/views/story/index.html.erb</p>

And, when browsing my 'story' (http://localhost:3000/story), I get this error: undefined method `name' for [#<Story id: 2, name: "sitepoint", link: "http://sitepoint">]:Array

Now using the Rails console within Netbeans, gives me this

v = Story.find_by_name('sitepoint')

v = Story.find_by_name('sitepoint') => #<Story id: 2, name: "sitepoint", link: "http://sitepoint">

v.name

v.name => "sitepoint"

No problem with 'name' - so what is the difference ? -

Regards Jørn

I have made this Controller:

class StoryController < ApplicationController def index    @current_time = Time.now    @s = Story.find_all_by_name('sitepoint') end end

<...>

Now using the Rails console within Netbeans, gives me this

v = Story.find_by_name('sitepoint')

v = Story.find_by_name('sitepoint') => #<Story id: 2, name: "sitepoint", link: "http://sitepoint">

v.name

v.name => "sitepoint"

No problem with 'name' - so what is the difference ? -

Can you spot a difference between   Story.find_all_by_name('sitepoint') and Story.find_by_name('sitepoint') ?

Now think, what you get back from the first query, and what you get back from the second one. Then answer yourself, does Array have an 'name' attribute?

Regards, Rimantas

Hi Community....

I'm new in this game, so this might be a easy question, but I have done my google, without result, so I will try this....

I'm learning ROR, and I'm using Patrick Lens 'Ruby on Rails' book. (This is written for ror 1.x - and I'm using NetBeans 6.1 - ror 2.x - this might be the problem...)

But...

I have made this Controller:

class StoryController < ApplicationController def index    @current_time = Time.now    @s = Story.find_all_by_name('sitepoint') end end

and this view:

<h1>Story#index</h1> hej <%= @current_time %> <%= @s.name%> <p>Find me in app/views/story/index.html.erb</p>

And, when browsing my 'story' (http://localhost:3000/story), I get this error: undefined method `name' for [#<Story id: 2, name: "sitepoint", link: "http://sitepoint">]:Array

Now using the Rails console within Netbeans, gives me this

v = Story.find_by_name('sitepoint')

v = Story.find_by_name('sitepoint') => #<Story id: 2, name: "sitepoint", link: "http://sitepoint">

v.name

v.name => "sitepoint"

No problem with 'name' - so what is the difference ? -

In the first example you are using "find_all_by_name". In the second you are using "find_by_name". The first returns an array. The second returns a Story object.

You can see this in the error:

undefined method `name' for [#<Story id: 2, name: "sitepoint", link: "http://sitepoint">]:Array

So you either need to loop in your view over @s. ie...

<% @s.each |story| do %>    <%= story.name %> <% end %>

Or change your controller to match what you are doing in console.

-philip

Yes.... hmmm.... that is very clear, and removing the all, solved the problem.... guess it is getting a bit late....

Thank you for you comments... I'm back on track.....

Regards Jørn.