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.