Forum: Ruby on Rails Rails2.2.2, is it a bug?

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.
Ea44bd120ed7cf301d561bcc3e7a6c96?d=identicon&s=25 浩翔 (Guest)
on 2008-12-16 10:37
(Received via mailing list)
yesterday, i make a demo with Rails2.2.2.


-------------------------------
model :  Movie
-------------------------------
class Movie < ActiveRecord::Base
    has_many :releases, :dependent => :destroy
    validates_presence_of :title
end


---------------------------------
model:  Release
---------------------------------
class Release < ActiveRecord::Base
  belongs_to :movie
  validates_presence_of :movie_id, :format, :released_on

  def to_s
    [self.format, released_on.to_s(:short)].join(' - ')
  end
end


-------------------------------------------
controller:  release_controller
-------------------------------------------
class ReleasesController < ApplicationController
  def show
    @release = Release.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @release }
    end
  end
end

--------------------------------------------------
app/views/release/show.html.erb
--------------------------------------------------
<p>
  <b>Movie:</b>
  <%=h @release.movie_id %>
</p>

<p>
  <b>Format:</b>
  <%=h @release.format %>
</p>

<p>
  <b>Released on:</b>
  <%=h @release.released_on %>
</p>


<%= link_to 'Edit', edit_release_path(@release) %> |
<%= link_to 'Back', releases_path %>


it's correct,   it works !    but , when i modify the show page as
following:


<p>
  <b>Movie:</b>
  <%=h @release.movie.title %>
</p>

<p>
  <b>Format:</b>
  <%=h @release.format %>
</p>

<p>
  <b>Released on:</b>
  <%=h @release.released_on %>
</p>


<%= link_to 'Edit', edit_release_path(@release) %> |
<%= link_to 'Back', releases_path %>


there is have a error.    "Attempt to call private method"   ---
format


Could u help me ?
Bee69cfed999cd13e3bff73d472a39ee?d=identicon&s=25 Hassan Schroeder (Guest)
on 2008-12-16 13:53
(Received via mailing list)
On Tue, Dec 16, 2008 at 1:36 AM, 浩翔 <blackanger.Z@gmail.com>
wrote:

> there is have a error.    "Attempt to call private method"   ---
> format

See: <http://wiki.rubyonrails.org/rails/pages/ReservedWords> -- the
"reported to cause trouble" section includes 'format'.

You might want to rename that attribute of your model.

HTH,
--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com
Ea44bd120ed7cf301d561bcc3e7a6c96?d=identicon&s=25 浩翔 (Guest)
on 2008-12-17 10:35
(Received via mailing list)
Thank you.

I know the 'format'  cause trouble, it's a private method ,    cause
stop  calling  method_missing,
   I change 'format' to 'formater' or other form, it's be fine.

but why this is good :
--------------------------------------------------
app/views/release/show.html.erb
--------------------------------------------------
<p>
  <b>Movie:</b>
  <%=h @release.movie_id %>
</p>

<p>
  <b>Format:</b>
  <%=h @release.format %>
</p>

<p>
  <b>Released on:</b>
  <%=h @release.released_on %>
</p>

<%= link_to 'Edit', edit_release_path(@release) %> |
<%= link_to 'Back', releases_path %>


Could u help me understand it ?




On Dec 16, 8:52 pm, "Hassan Schroeder" <hassan.schroe...@gmail.com>
A1b97dafea62b11e7b3bef338ce3fe83?d=identicon&s=25 Billy Hsu (cfc)
on 2008-12-17 11:53
(Received via mailing list)
Did you mean: You got the error in the Model, but it was worked in the
View?

Maybe you can try this in the Model:

self[:format] replace self.format

On Wed, Dec 17, 2008 at 5:34 PM,  <blackanger.Z@gmail.com> wrote:

> --------------------------------------------------
> <p>
>
> >
> > You might want to rename that attribute of your model.
> >
> > HTH,
> > --
> > Hassan Schroeder ------------------------ hassan.schroe...@gmail.com
> >
>


--
TWRUG Blog:
http://blog.rubyonrails.org.tw

CFC on Rails:
http://zusocfc.blogspot.com

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc
Ea44bd120ed7cf301d561bcc3e7a6c96?d=identicon&s=25 浩翔 (Guest)
on 2008-12-18 15:12
(Received via mailing list)
Thank you.
I know the issue.    sefl[:format] is good.
but i dont' understand why it reported the error : "Attempt to call
private method" in View page,   when i  called show action.

I know the column 'format' will be cause trouble.    beacuse all of
instance variable  has the private method  named  'format',  right ?

but  why it is good as following :
--------------------------------------------------
app/views/release/show.html.erb
--------------------------------------------------
<p>
  <b>Movie:</b>
  <%=h @release.movie_id %>
</p>

<p>
  <b>Format:</b>
  <%=h @release.format %>
</p>

<p>
  <b>Released on:</b>
  <%=h @release.released_on %>
</p>

<%= link_to 'Edit', edit_release_path(@release) %> |
<%= link_to 'Back', releases_path %>

it is good .    but when i changed   <%=h @release.movie_id %>  to   <
%=h @release.movie.title %>,   when i called show action ,  it
reported a error :"Attempt to call private method"( this line:    <%=h
@release.format %>)



how can to explain it ?  thank you.
A1b97dafea62b11e7b3bef338ce3fe83?d=identicon&s=25 Billy Hsu (cfc)
on 2008-12-18 16:22
(Received via mailing list)
Same as the model
Change @release.format to @release[:format]
:)
Cause format is a private method, so you can't call it.
No matter it is in the model or in the view.
So, you can use model[:method] to grab the correct column.
Or, you can try to use: read_attribute("format") in the model :)

On Thu, Dec 18, 2008 at 10:11 PM,  <blackanger.Z@gmail.com> wrote:

> --------------------------------------------------
> </p>
> %=h @release.movie.title %>,   when i called show action ,  it
>
> > Did you mean: You got the error in the Model, but it was worked in the
> > > Thank you.
> > >  <b>Movie:</b>
> > >  <%=h @release.released_on %>
> > > > > there is have a error.    "Attempt to call private method"   ---
> >
> > --
> > TWRUG Blog:http://blog.rubyonrails.org.tw
> >
> > CFC on Rails:http://zusocfc.blogspot.com
> >
> > Only two surfaces of a box:http://blog.pixnet.net/zusocfc
> >
>


--
TWRUG Blog:
http://blog.rubyonrails.org.tw

CFC on Rails:
http://zusocfc.blogspot.com

Only two surfaces of a box:
http://blog.pixnet.net/zusocfc
Ae8eace81dec32521c762ab0dcd98588?d=identicon&s=25 almas ali (Guest)
on 2008-12-18 17:35
(Received via mailing list)
Hi,Am Almas M totally new to this site i was jst going the site of
Ruby's on
Rails i hav no idea how am i to begin with.It would be really gud if u
guide
and let me wht is it all about.






Rdgs
Almas
Ea44bd120ed7cf301d561bcc3e7a6c96?d=identicon&s=25 浩翔 (Guest)
on 2008-12-19 10:20
(Received via mailing list)
why i can call format in this  page:

--------------------------------------------------
app/views/release/show.html.erb
--------------------------------------------------
<p>
  <b>Movie:</b>
  <%=h @release.movie_id %>
</p>

<p>
  <b>Format:</b>
  <%=h @release.format %>
</p>

<p>
  <b>Released on:</b>
  <%=h @release.released_on %>
</p>

<%= link_to 'Edit', edit_release_path(@release) %> |
<%= link_to 'Back', releases_path %>


it is good!  format can be call .  why ?

I'm  really confused!
Ea44bd120ed7cf301d561bcc3e7a6c96?d=identicon&s=25 浩翔 (Guest)
on 2008-12-19 10:22
(Received via mailing list)
you can read <Agile Web Development With Rails 3rdEdition>
This topic is locked and can not be replied to.