I''m trying to learn rails as I go along, and having a bit of trouble.
There is an undefined method cropping that I don''t know why rails
thinks should be there.
Firstly, I''m using rails 3, ruby 1.9.2
I have a controller with an index action This part works fine, but i
am trying to add a comment form to the page that is rendered by that
index action.
Supposing my controller is named controller1,
I began this process first with:
rails g model comments name:string content:text
rake rb:migrate
Then I went on to define an action to create the comments:
within contoller1_controller.rb I added
======== def new
@comment = Comments.new
respond_to do |format|
format.html
format.xml { render :xml => @comment }
end
end
=======
views/controller1/new.haml contains
======== render ''form''
=======
and _form.html.erb contains
=======<%= form_for(@comment) do |format| %>
<div class=''commentForm''>
<%= format.label :name %><br />
<%= format.text_field :name %><br />
<%= format.label :content %><br />
<%= format.text_area :content %><br />
<div class=''commentSend''>
<%= format.submit %>
</div>
</div>
<% end %>
======
I then added into routes.db the following lines:
resource :comments
map.connect ''/controller1/new'', :controller =>
''controller1'', :action => ''new''
Now, navigating to /controller1/new gives me this error:
undefined method `comments_index_path''
What am I missing?
If I change the form to "form_for(:Comments)", then
''/controller1/new''
renders, however, when I then add "@comments = Comments.all" into the
index definition, and:
- @comments.each do |comment|
- comment.content
into the index.haml file, no comments are actually displayed. So I
assume the form is not actually sending anything to the database
Any tips on what I''m doing wrong would be greatly appreciated,
Thanks
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
You were using a singular resource when you should have defined a plural one. Also, you can specify the controller on your RESTful route instead of having to create a separate map.connect or match: resources :comments, :controller => ''controller1'' I recommend that you use consistent naming with your controllers and routes though. HTH On 10/14/10 5:53 PM, aperture science wrote:> > I''m trying to learn rails as I go along, and having a bit of trouble. > There is an undefined method cropping that I don''t know why rails > thinks should be there. > > Firstly, I''m using rails 3, ruby 1.9.2 > > I have a controller with an index action This part works fine, but i > am trying to add a comment form to the page that is rendered by that > index action. > > Supposing my controller is named controller1, > > I began this process first with: > > rails g model comments name:string content:text > rake rb:migrate > > Then I went on to define an action to create the comments: > > within contoller1_controller.rb I added > ========> def new > @comment = Comments.new > > respond_to do |format| > format.html > format.xml { render :xml => @comment } > end > end > =======> > views/controller1/new.haml contains > =======> = render ''form'' > =======> > and _form.html.erb contains > =======> <%= form_for(@comment) do |format| %> > > <div class=''commentForm''> > <%= format.label :name %><br /> > <%= format.text_field :name %><br /> > > <%= format.label :content %><br /> > <%= format.text_area :content %><br /> > <div class=''commentSend''> > <%= format.submit %> > </div> > </div> > > <% end %> > ======> > I then added into routes.db the following lines: > resource :comments > map.connect ''/controller1/new'', :controller => > ''controller1'', :action => ''new'' > > > Now, navigating to /controller1/new gives me this error: > > undefined method `comments_index_path'' > > > What am I missing? > > If I change the form to "form_for(:Comments)", then ''/controller1/new'' > renders, however, when I then add "@comments = Comments.all" into the > index definition, and: > - @comments.each do |comment| > - comment.content > into the index.haml file, no comments are actually displayed. So I > assume the form is not actually sending anything to the database > > > Any tips on what I''m doing wrong would be greatly appreciated, > > Thanks >-- Erol Fornoles http://github.com/Erol http://twitter.com/erolfornoles http://ph.linkedin.com/in/erolfornoles -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I''m still getting the "undefined method `comments_index_path''" error The extracted source points at: <%= form_for(@comment) do |format| %> I cannot find where that method would be being called from even..."comments_index_path" only appears in the development.log On Oct 14, 3:08 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> You were using a singular resource when you should have defined a plural > one. Also, you can specify the controller on your RESTful route instead > of having to create a separate map.connect or match: > > resources :comments, :controller => ''controller1'' > > I recommend that you use consistent naming with your controllers and > routes though. > > HTH > > On 10/14/10 5:53 PM, aperture science wrote: > > > > > > > I''m trying to learn rails as I go along, and having a bit of trouble. > > There is an undefined method cropping that I don''t know why rails > > thinks should be there. > > > Firstly, I''m using rails 3, ruby 1.9.2 > > > I have a controller with an index action This part works fine, but i > > am trying to add a comment form to the page that is rendered by that > > index action. > > > Supposing my controller is named controller1, > > > I began this process first with: > > > rails g model comments name:string content:text > > rake rb:migrate > > > Then I went on to define an action to create the comments: > > > within contoller1_controller.rb I added > > ========> > def new > > @comment = Comments.new > > > respond_to do |format| > > format.html > > format.xml { render :xml => @comment } > > end > > end > > =======> > > views/controller1/new.haml contains > > =======> > = render ''form'' > > =======> > > and _form.html.erb contains > > =======> > <%= form_for(@comment) do |format| %> > > > <div class=''commentForm''> > > <%= format.label :name %><br /> > > <%= format.text_field :name %><br /> > > > <%= format.label :content %><br /> > > <%= format.text_area :content %><br /> > > <div class=''commentSend''> > > <%= format.submit %> > > </div> > > </div> > > > <% end %> > > ======> > > I then added into routes.db the following lines: > > resource :comments > > map.connect ''/controller1/new'', :controller => > > ''controller1'', :action => ''new'' > > > Now, navigating to /controller1/new gives me this error: > > > undefined method `comments_index_path'' > > > What am I missing? > > > If I change the form to "form_for(:Comments)", then ''/controller1/new'' > > renders, however, when I then add "@comments = Comments.all" into the > > index definition, and: > > - @comments.each do |comment| > > - comment.content > > into the index.haml file, no comments are actually displayed. So I > > assume the form is not actually sending anything to the database > > > Any tips on what I''m doing wrong would be greatly appreciated, > > > Thanks > > -- > Erol Fornoleshttp://github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hmmm wait, I just noticed something. Could you rename your Comments model to Comment (from plural to singular). Don''t forget to rename the model file (comments.rb to comment.rb) On 10/14/10 8:52 PM, aperture science wrote:> I''m still getting the "undefined method `comments_index_path''" error > > The extracted source points at: > <%= form_for(@comment) do |format| %> > > I cannot find where that method would be being called from > even..."comments_index_path" only appears in the development.log > > On Oct 14, 3:08 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> You were using a singular resource when you should have defined a plural >> one. Also, you can specify the controller on your RESTful route instead >> of having to create a separate map.connect or match: >> >> resources :comments, :controller => ''controller1'' >> >> I recommend that you use consistent naming with your controllers and >> routes though. >> >> HTH >> >> On 10/14/10 5:53 PM, aperture science wrote: >> >> >> >> >> >>> I''m trying to learn rails as I go along, and having a bit of trouble. >>> There is an undefined method cropping that I don''t know why rails >>> thinks should be there. >> >>> Firstly, I''m using rails 3, ruby 1.9.2 >> >>> I have a controller with an index action This part works fine, but i >>> am trying to add a comment form to the page that is rendered by that >>> index action. >> >>> Supposing my controller is named controller1, >> >>> I began this process first with: >> >>> rails g model comments name:string content:text >>> rake rb:migrate >> >>> Then I went on to define an action to create the comments: >> >>> within contoller1_controller.rb I added >>> ========>>> def new >>> @comment = Comments.new >> >>> respond_to do |format| >>> format.html >>> format.xml { render :xml => @comment } >>> end >>> end >>> =======>> >>> views/controller1/new.haml contains >>> =======>>> = render ''form'' >>> =======>> >>> and _form.html.erb contains >>> =======>>> <%= form_for(@comment) do |format| %> >> >>> <div class=''commentForm''> >>> <%= format.label :name %><br /> >>> <%= format.text_field :name %><br /> >> >>> <%= format.label :content %><br /> >>> <%= format.text_area :content %><br /> >>> <div class=''commentSend''> >>> <%= format.submit %> >>> </div> >>> </div> >> >>> <% end %> >>> ======>> >>> I then added into routes.db the following lines: >>> resource :comments >>> map.connect ''/controller1/new'', :controller => >>> ''controller1'', :action => ''new'' >> >>> Now, navigating to /controller1/new gives me this error: >> >>> undefined method `comments_index_path'' >> >>> What am I missing? >> >>> If I change the form to "form_for(:Comments)", then ''/controller1/new'' >>> renders, however, when I then add "@comments = Comments.all" into the >>> index definition, and: >>> - @comments.each do |comment| >>> - comment.content >>> into the index.haml file, no comments are actually displayed. So I >>> assume the form is not actually sending anything to the database >> >>> Any tips on what I''m doing wrong would be greatly appreciated, >> >>> Thanks >> >> -- >> Erol Fornoleshttp://github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles >-- Erol Fornoles http://github.com/Erol http://twitter.com/erolfornoles http://ph.linkedin.com/in/erolfornoles -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks, that gets the comment form loading.
I added:
def create
@comment = Comment.new(params[:comments])
respond_to do |format|
if @comment.save
format.html { redirect_to(''/'', :notice =>
''comment posted'') }
format.xml { render :xml => @comment, :status
=> :created, :location => @comment }
else
format.html { render :action => "new" }
format.xml { render :xml => @comment.errors, :status
=> :unprocessable_entity }
end
end
end
to my controller1_controller.rb file, and now when I click the submit
button, I get the following error
"uninitialized constant CommentsController"
Despite the redirect_to(''/'', ...) the page is redirecting to
/comments
On Oct 14, 6:26 am, Erol Fornoles
<erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hmmm wait, I just noticed something. Could you rename your Comments
> model to Comment (from plural to singular). Don''t forget to rename
the
> model file (comments.rb to comment.rb)
>
> On 10/14/10 8:52 PM, aperture science wrote:
>
>
>
> > I''m still getting the "undefined method
`comments_index_path''" error
>
> > The extracted source points at:
> > <%= form_for(@comment) do |format| %>
>
> > I cannot find where that method would be being called from
> > even..."comments_index_path" only appears in the
development.log
>
> > On Oct 14, 3:08 am, Erol Fornoles
<erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> >> You were using a singular resource when you should have defined a
plural
> >> one. Also, you can specify the controller on your RESTful route
instead
> >> of having to create a separate map.connect or match:
>
> >> resources :comments, :controller =>
''controller1''
>
> >> I recommend that you use consistent naming with your controllers
and
> >> routes though.
>
> >> HTH
>
> >> On 10/14/10 5:53 PM, aperture science wrote:
>
> >>> I''m trying to learn rails as I go along, and having a
bit of trouble.
> >>> There is an undefined method cropping that I don''t
know why rails
> >>> thinks should be there.
>
> >>> Firstly, I''m using rails 3, ruby 1.9.2
>
> >>> I have a controller with an index action This part works fine,
but i
> >>> am trying to add a comment form to the page that is rendered
by that
> >>> index action.
>
> >>> Supposing my controller is named controller1,
>
> >>> I began this process first with:
>
> >>> rails g model comments name:string content:text
> >>> rake rb:migrate
>
> >>> Then I went on to define an action to create the comments:
>
> >>> within contoller1_controller.rb I added
> >>> ========> >>> def new
> >>> @comment = Comments.new
>
> >>> respond_to do |format|
> >>> format.html
> >>> format.xml { render :xml => @comment }
> >>> end
> >>> end
> >>> =======>
> >>> views/controller1/new.haml contains
> >>> =======> >>> = render ''form''
> >>> =======>
> >>> and _form.html.erb contains
> >>> =======> >>> <%= form_for(@comment) do |format|
%>
>
> >>> <div class=''commentForm''>
> >>> <%= format.label :name %><br />
> >>> <%= format.text_field :name %><br />
>
> >>> <%= format.label :content %><br />
> >>> <%= format.text_area :content %><br />
> >>> <div class=''commentSend''>
> >>> <%= format.submit %>
> >>> </div>
> >>> </div>
>
> >>> <% end %>
> >>> ======>
> >>> I then added into routes.db the following lines:
> >>> resource :comments
> >>> map.connect ''/controller1/new'',
:controller =>
> >>> ''controller1'', :action =>
''new''
>
> >>> Now, navigating to /controller1/new gives me this error:
>
> >>> undefined method `comments_index_path''
>
> >>> What am I missing?
>
> >>> If I change the form to "form_for(:Comments)", then
''/controller1/new''
> >>> renders, however, when I then add "@comments =
Comments.all" into the
> >>> index definition, and:
> >>> - @comments.each do |comment|
> >>> - comment.content
> >>> into the index.haml file, no comments are actually displayed.
So I
> >>> assume the form is not actually sending anything to the
database
>
> >>> Any tips on what I''m doing wrong would be greatly
appreciated,
>
> >>> Thanks
>
> >> --
> >> Erol
Fornoleshttp://github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linked...
>
> --
> Erol
Fornoleshttp://github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Can you post your route setup again? On Fri, Oct 15, 2010 at 4:31 AM, aperture science <mekkagojira-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>wrote:> Thanks, that gets the comment form loading. > > I added: > > def create > @comment = Comment.new(params[:comments]) > > respond_to do |format| > if @comment.save > format.html { redirect_to(''/'', :notice => ''comment posted'') } > format.xml { render :xml => @comment, :status > => :created, :location => @comment } > else > format.html { render :action => "new" } > format.xml { render :xml => @comment.errors, :status > => :unprocessable_entity } > end > end > end > > to my controller1_controller.rb file, and now when I click the submit > button, I get the following error > "uninitialized constant CommentsController" > > Despite the redirect_to(''/'', ...) the page is redirecting to /comments > > > On Oct 14, 6:26 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > Hmmm wait, I just noticed something. Could you rename your Comments > > model to Comment (from plural to singular). Don''t forget to rename the > > model file (comments.rb to comment.rb) > > > > On 10/14/10 8:52 PM, aperture science wrote: > > > > > > > > > I''m still getting the "undefined method `comments_index_path''" error > > > > > The extracted source points at: > > > <%= form_for(@comment) do |format| %> > > > > > I cannot find where that method would be being called from > > > even..."comments_index_path" only appears in the development.log > > > > > On Oct 14, 3:08 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > >> You were using a singular resource when you should have defined a > plural > > >> one. Also, you can specify the controller on your RESTful route > instead > > >> of having to create a separate map.connect or match: > > > > >> resources :comments, :controller => ''controller1'' > > > > >> I recommend that you use consistent naming with your controllers and > > >> routes though. > > > > >> HTH > > > > >> On 10/14/10 5:53 PM, aperture science wrote: > > > > >>> I''m trying to learn rails as I go along, and having a bit of trouble. > > >>> There is an undefined method cropping that I don''t know why rails > > >>> thinks should be there. > > > > >>> Firstly, I''m using rails 3, ruby 1.9.2 > > > > >>> I have a controller with an index action This part works fine, but i > > >>> am trying to add a comment form to the page that is rendered by that > > >>> index action. > > > > >>> Supposing my controller is named controller1, > > > > >>> I began this process first with: > > > > >>> rails g model comments name:string content:text > > >>> rake rb:migrate > > > > >>> Then I went on to define an action to create the comments: > > > > >>> within contoller1_controller.rb I added > > >>> ========> > >>> def new > > >>> @comment = Comments.new > > > > >>> respond_to do |format| > > >>> format.html > > >>> format.xml { render :xml => @comment } > > >>> end > > >>> end > > >>> =======> > > > >>> views/controller1/new.haml contains > > >>> =======> > >>> = render ''form'' > > >>> =======> > > > >>> and _form.html.erb contains > > >>> =======> > >>> <%= form_for(@comment) do |format| %> > > > > >>> <div class=''commentForm''> > > >>> <%= format.label :name %><br /> > > >>> <%= format.text_field :name %><br /> > > > > >>> <%= format.label :content %><br /> > > >>> <%= format.text_area :content %><br /> > > >>> <div class=''commentSend''> > > >>> <%= format.submit %> > > >>> </div> > > >>> </div> > > > > >>> <% end %> > > >>> ======> > > > >>> I then added into routes.db the following lines: > > >>> resource :comments > > >>> map.connect ''/controller1/new'', :controller => > > >>> ''controller1'', :action => ''new'' > > > > >>> Now, navigating to /controller1/new gives me this error: > > > > >>> undefined method `comments_index_path'' > > > > >>> What am I missing? > > > > >>> If I change the form to "form_for(:Comments)", then > ''/controller1/new'' > > >>> renders, however, when I then add "@comments = Comments.all" into > the > > >>> index definition, and: > > >>> - @comments.each do |comment| > > >>> - comment.content > > >>> into the index.haml file, no comments are actually displayed. So I > > >>> assume the form is not actually sending anything to the database > > > > >>> Any tips on what I''m doing wrong would be greatly appreciated, > > > > >>> Thanks > > > > >> -- > > >> Erol Fornoleshttp:// > github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linked... > > > > -- > > Erol Fornoleshttp:// > github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- Erol M. Fornoles http://github.com/Erol http://twitter.com/erolfornoles http://ph.linkedin.com/in/erolfornoles -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Internet::Application.routes.draw do |map| get "internets/index" get "section4/index" get "section3/index" get "section2/index" get "section1/index" get "science/index" resources :users resources :comments map.connect ''/blog/new'', :controller => ''section3'', :action => ''new'' get ''login(.:format)'' => ''user_session#new'', :as => :login post ''login(.:format)'' => ''user_session#create'', :as => :login delete ''logout(.:format)'' => ''user_session#destroy'', :as => :logout get "home/index" root :to => "home#index" map.logout ''logout'', :controller => ''user_session'', :action => ''destroy'' map.logout ''logout'', :controller => ''user_session'', :action => ''destroy'' map.edit ''edit'', :controller => ''users'', :action => ''edit'' map.internets ''internets'', :controller => ''internets'', :action => ''index'' map.section4 ''random'', :controller => ''section4'', :action => ''index'' map.section3 ''blog'', :controller => ''section3'', :action => ''index'' map.section2 ''artistry'', :controller => ''section2'', :action => ''index'' map.section1 ''home'', :controller => ''section1'', :action => ''index'' end Thats the entirety of it. The area that is giving me trouble is in the ''section3'' controller I can post comments from the console, and they do then show up in the index. and when I use "form_for :comments" the log shows the data being posted, but there''s no INSERT INTO being executed It seems like the form is not reading from the controller thanks for the help On Oct 14, 6:26 pm, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Can you post your route setup again? > > On Fri, Oct 15, 2010 at 4:31 AM, aperture science <mekkagoj...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>wrote: > > > > > Thanks, that gets the comment form loading. > > > I added: > > > def create > > @comment = Comment.new(params[:comments]) > > > respond_to do |format| > > if @comment.save > > format.html { redirect_to(''/'', :notice => ''comment posted'') } > > format.xml { render :xml => @comment, :status > > => :created, :location => @comment } > > else > > format.html { render :action => "new" } > > format.xml { render :xml => @comment.errors, :status > > => :unprocessable_entity } > > end > > end > > end > > > to my controller1_controller.rb file, and now when I click the submit > > button, I get the following error > > "uninitialized constant CommentsController" > > > Despite the redirect_to(''/'', ...) the page is redirecting to /comments > > > On Oct 14, 6:26 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Hmmm wait, I just noticed something. Could you rename your Comments > > > model to Comment (from plural to singular). Don''t forget to rename the > > > model file (comments.rb to comment.rb) > > > > On 10/14/10 8:52 PM, aperture science wrote: > > > > > I''m still getting the "undefined method `comments_index_path''" error > > > > > The extracted source points at: > > > > <%= form_for(@comment) do |format| %> > > > > > I cannot find where that method would be being called from > > > > even..."comments_index_path" only appears in the development.log > > > > > On Oct 14, 3:08 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > >> You were using a singular resource when you should have defined a > > plural > > > >> one. Also, you can specify the controller on your RESTful route > > instead > > > >> of having to create a separate map.connect or match: > > > > >> resources :comments, :controller => ''controller1'' > > > > >> I recommend that you use consistent naming with your controllers and > > > >> routes though. > > > > >> HTH > > > > >> On 10/14/10 5:53 PM, aperture science wrote: > > > > >>> I''m trying to learn rails as I go along, and having a bit of trouble. > > > >>> There is an undefined method cropping that I don''t know why rails > > > >>> thinks should be there. > > > > >>> Firstly, I''m using rails 3, ruby 1.9.2 > > > > >>> I have a controller with an index action This part works fine, but i > > > >>> am trying to add a comment form to the page that is rendered by that > > > >>> index action. > > > > >>> Supposing my controller is named controller1, > > > > >>> I began this process first with: > > > > >>> rails g model comments name:string content:text > > > >>> rake rb:migrate > > > > >>> Then I went on to define an action to create the comments: > > > > >>> within contoller1_controller.rb I added > > > >>> ========> > > >>> def new > > > >>> @comment = Comments.new > > > > >>> respond_to do |format| > > > >>> format.html > > > >>> format.xml { render :xml => @comment } > > > >>> end > > > >>> end > > > >>> =======> > > > >>> views/controller1/new.haml contains > > > >>> =======> > > >>> = render ''form'' > > > >>> =======> > > > >>> and _form.html.erb contains > > > >>> =======> > > >>> <%= form_for(@comment) do |format| %> > > > > >>> <div class=''commentForm''> > > > >>> <%= format.label :name %><br /> > > > >>> <%= format.text_field :name %><br /> > > > > >>> <%= format.label :content %><br /> > > > >>> <%= format.text_area :content %><br /> > > > >>> <div class=''commentSend''> > > > >>> <%= format.submit %> > > > >>> </div> > > > >>> </div> > > > > >>> <% end %> > > > >>> ======> > > > >>> I then added into routes.db the following lines: > > > >>> resource :comments > > > >>> map.connect ''/controller1/new'', :controller => > > > >>> ''controller1'', :action => ''new'' > > > > >>> Now, navigating to /controller1/new gives me this error: > > > > >>> undefined method `comments_index_path'' > > > > >>> What am I missing? > > > > >>> If I change the form to "form_for(:Comments)", then > > ''/controller1/new'' > > > >>> renders, however, when I then add "@comments = Comments.all" into > > the > > > >>> index definition, and: > > > >>> - @comments.each do |comment| > > > >>> - comment.content > > > >>> into the index.haml file, no comments are actually displayed. So I > > > >>> assume the form is not actually sending anything to the database > > > > >>> Any tips on what I''m doing wrong would be greatly appreciated, > > > > >>> Thanks > > > > >> -- > > > >> Erol Fornoleshttp:// > > github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linked... > > > > -- > > > Erol Fornoleshttp:// > > github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles > > > -- > > You received this message because you are subscribed to the Google Groups > > "Ruby on Rails: Talk" group. > > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to > > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > > . > > For more options, visit this group at > >http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- > Erol M. Fornoleshttp://github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I got it to work by creating a comments_controller.rb file and using the same action definitions as the section3_controller I''m not sure why i had to make a new controller though. But, thanks for the help On Oct 14, 7:09 pm, aperture science <mekkagoj...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Internet::Application.routes.draw do |map| > get "internets/index" > get "section4/index" > get "section3/index" > get "section2/index" > get "section1/index" > get "science/index" > resources :users > resources :comments > map.connect ''/blog/new'', :controller => ''section3'', :action => ''new'' > get ''login(.:format)'' => ''user_session#new'', :as => :login > post ''login(.:format)'' => ''user_session#create'', :as => :login > delete ''logout(.:format)'' => ''user_session#destroy'', :as => :logout > get "home/index" > root :to => "home#index" > map.logout ''logout'', :controller => ''user_session'', :action => > ''destroy'' > map.logout ''logout'', :controller => ''user_session'', :action => > ''destroy'' > map.edit ''edit'', :controller => ''users'', :action => ''edit'' > map.internets ''internets'', :controller => ''internets'', :action => > ''index'' > map.section4 ''random'', :controller => ''section4'', :action => ''index'' > map.section3 ''blog'', :controller => ''section3'', :action => ''index'' > map.section2 ''artistry'', :controller => ''section2'', :action => > ''index'' > map.section1 ''home'', :controller => ''section1'', :action => ''index'' > end > > Thats the entirety of it. The area that is giving me trouble is in > the ''section3'' controller > > I can post comments from the console, and they do then show up in the > index. > > and when I use "form_for :comments" the log shows the data being > posted, but there''s no INSERT INTO being executed > > It seems like the form is not reading from the controller > > thanks for the help > > On Oct 14, 6:26 pm, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Can you post your route setup again? > > > On Fri, Oct 15, 2010 at 4:31 AM, aperture science <mekkagoj...-Re5JQEeQqe8@public.gmane.orgm>wrote: > > > > Thanks, that gets the comment form loading. > > > > I added: > > > > def create > > > @comment = Comment.new(params[:comments]) > > > > respond_to do |format| > > > if @comment.save > > > format.html { redirect_to(''/'', :notice => ''comment posted'') } > > > format.xml { render :xml => @comment, :status > > > => :created, :location => @comment } > > > else > > > format.html { render :action => "new" } > > > format.xml { render :xml => @comment.errors, :status > > > => :unprocessable_entity } > > > end > > > end > > > end > > > > to my controller1_controller.rb file, and now when I click the submit > > > button, I get the following error > > > "uninitialized constant CommentsController" > > > > Despite the redirect_to(''/'', ...) the page is redirecting to /comments > > > > On Oct 14, 6:26 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Hmmm wait, I just noticed something. Could you rename your Comments > > > > model to Comment (from plural to singular). Don''t forget to rename the > > > > model file (comments.rb to comment.rb) > > > > > On 10/14/10 8:52 PM, aperture science wrote: > > > > > > I''m still getting the "undefined method `comments_index_path''" error > > > > > > The extracted source points at: > > > > > <%= form_for(@comment) do |format| %> > > > > > > I cannot find where that method would be being called from > > > > > even..."comments_index_path" only appears in the development.log > > > > > > On Oct 14, 3:08 am, Erol Fornoles <erol.forno...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > >> You were using a singular resource when you should have defined a > > > plural > > > > >> one. Also, you can specify the controller on your RESTful route > > > instead > > > > >> of having to create a separate map.connect or match: > > > > > >> resources :comments, :controller => ''controller1'' > > > > > >> I recommend that you use consistent naming with your controllers and > > > > >> routes though. > > > > > >> HTH > > > > > >> On 10/14/10 5:53 PM, aperture science wrote: > > > > > >>> I''m trying to learn rails as I go along, and having a bit of trouble. > > > > >>> There is an undefined method cropping that I don''t know why rails > > > > >>> thinks should be there. > > > > > >>> Firstly, I''m using rails 3, ruby 1.9.2 > > > > > >>> I have a controller with an index action This part works fine, but i > > > > >>> am trying to add a comment form to the page that is rendered by that > > > > >>> index action. > > > > > >>> Supposing my controller is named controller1, > > > > > >>> I began this process first with: > > > > > >>> rails g model comments name:string content:text > > > > >>> rake rb:migrate > > > > > >>> Then I went on to define an action to create the comments: > > > > > >>> within contoller1_controller.rb I added > > > > >>> ========> > > > >>> def new > > > > >>> @comment = Comments.new > > > > > >>> respond_to do |format| > > > > >>> format.html > > > > >>> format.xml { render :xml => @comment } > > > > >>> end > > > > >>> end > > > > >>> =======> > > > > >>> views/controller1/new.haml contains > > > > >>> =======> > > > >>> = render ''form'' > > > > >>> =======> > > > > >>> and _form.html.erb contains > > > > >>> =======> > > > >>> <%= form_for(@comment) do |format| %> > > > > > >>> <div class=''commentForm''> > > > > >>> <%= format.label :name %><br /> > > > > >>> <%= format.text_field :name %><br /> > > > > > >>> <%= format.label :content %><br /> > > > > >>> <%= format.text_area :content %><br /> > > > > >>> <div class=''commentSend''> > > > > >>> <%= format.submit %> > > > > >>> </div> > > > > >>> </div> > > > > > >>> <% end %> > > > > >>> ======> > > > > >>> I then added into routes.db the following lines: > > > > >>> resource :comments > > > > >>> map.connect ''/controller1/new'', :controller => > > > > >>> ''controller1'', :action => ''new'' > > > > > >>> Now, navigating to /controller1/new gives me this error: > > > > > >>> undefined method `comments_index_path'' > > > > > >>> What am I missing? > > > > > >>> If I change the form to "form_for(:Comments)", then > > > ''/controller1/new'' > > > > >>> renders, however, when I then add "@comments = Comments.all" into > > > the > > > > >>> index definition, and: > > > > >>> - @comments.each do |comment| > > > > >>> - comment.content > > > > >>> into the index.haml file, no comments are actually displayed. So I > > > > >>> assume the form is not actually sending anything to the database > > > > > >>> Any tips on what I''m doing wrong would be greatly appreciated, > > > > > >>> Thanks > > > > > >> -- > > > > >> Erol Fornoleshttp:// > > > github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linked... > > > > > -- > > > > Erol Fornoleshttp:// > > > github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linkedin.com/in/erolfornoles > > > > -- > > > You received this message because you are subscribed to the Google Groups > > > "Ruby on Rails: Talk" group. > > > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh4Ykp1iOSErHA@public.gmane.orgm. > > > To unsubscribe from this group, send email to > > > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/rubyonrails-talk?hl=en. > > > -- > > Erol M. Fornoleshttp://github.com/Erolhttp://twitter.com/erolfornoleshttp://ph.linked...-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.