I thought I would set up a simple form for email noification to tinker
with and see how it worked However the simplicity part has so far
eluded me. Currently this particular page generates an error "Need
controller and action!" when to my eyes everything is in order.
Any suggestions as to what is going on. Thanks in advance.
Bill
ERROR
ActionController::RoutingError in Emailer#send_mail
Showing emailer/display.html.erb where line #71 raised:
Need controller and action!
Extracted source (around line #71):
71: <% form_for(:emailer, :url => {:action =>
''send_mail''}, :html =>
{:class => ''style1''}) do |f| %>
-------------------------
FORM
<% form_for(:emailer, :url => {:action =>
''send_mail''}, :html =>
{:class => ''style1''}) do |f| %>
<%= label(:subject, ''Topic:'') %>
<%= f.select :subject, %w{ Hyponatremia/hydration Admin/
site }%><br>
<%= label(:comment, ''Comments:'') %>
<%= f.text_area :comment, :cols => 40, :rows => 10 %>
<br>
<%= label(:from, ''Name:'') %>
<%= f.text_field :from, :style => "width: 200px;"
%><br>
<%= label(:senderemail, ''Email:'') %>
<%= f.text_field :senderemail, :style => "width:
200px;"
%><br>
<%= submit_tag ''Send'' %>
---------------------------
CONTROLLER
class EmailerController < ApplicationController
def display
render :action => ''display''
end
def send_mail
Emailer.deliver_display
(:subject, :comment, :senderemail, :from)
end
end
--~--~---------~--~----~------------~-------~--~----~
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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2009-Apr-03 08:02 UTC
Re: url (view > controller) error "Need controller and action!"
On Apr 3, 3:19 am, zambezi <b.but...-GrTI0ftTvuWGJGYlWa3Ukdi2O/JbrIOy@public.gmane.org> wrote:> I thought I would set up a simple form for email noification to tinker > with and see how it worked However the simplicity part has so far > eluded me. Currently this particular page generates an error "Need > controller and action!" when to my eyes everything is in order. >The clue should be in the message - you''re not supplying a controller :-) Normally if you don''t supply the :controller option then the current one is implicit, but things are different when rendering an email. Fred --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@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 -~----------~----~----~----~------~----~------~--~---
zambezi
2009-Apr-03 21:13 UTC
Re: url (view > controller) error "Need controller and action!"
Thank you, Fred. You were spot on. Explicitly designating the
controller resolved the error.
However that brought me to the next error/issue:
NoMethodError in Emailer#send_mail
Showing emailer/display.html.erb where line #71 raised:
undefined method `protect_against_forgery?'' for #<ActionView::Base:
0x34d9c68>
Extracted source (around line #71):
71: <% form_for(:emailer, :url => {:controller =>
''emailer'', :action
=> ''send_mail''}, :html => {:class =>
''style1''}) do |f| %>
RAILS_ROOT: C:/RubyRails/rails_apps/rappEAHv2
Application Trace | Framework Trace | Full Trace
C:/RubyRails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_view/helpers/form_tag_helper.rb:404:in `extra_tags_for_form''
C:/RubyRails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_view/helpers/form_tag_helper.rb:412:in `form_tag_html''
C:/RubyRails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_view/helpers/form_tag_helper.rb:41:in `form_tag''
C:/RubyRails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_view/helpers/form_helper.rb:183:in `form_for''
app/views/emailer/display.html.erb:71:in
`_run_erb_47app47views47emailer47display46html46erb''
app/controllers/emailer_controller.rb:8:in `send_mail''
-e:3:in `load''
-e:3
--------------
Googling on the error didn''t turn up much and generally seemed to
attribute the problem to weirdness. One suggestion was that the
problem''s roots were due to plugin installation. But I
haven''t
tinkered with the default installation plugins . Another suggestion
was to create a new project and try again. I did and the issue
persisted.
There were a couple of suggestions to disable or dodge
protect_against_forgery. I was unable to do so via the controller,
but adding the following in the helper class punted the issue down the
field.
def protect_against_forgery?
false
end
----------------
The punt didn''t go far. This "fix" perhaps not unexpectedly
resulted
in the next error: "ActionController::InvalidAuthenticityToken".
Sooo, I''m at the deep end of the pool here. I really didn''t
want to
learn all about authenticity tokens at this stage of my learning
ruby. Any further suggestions will be much appreciated as to how to
get past this error.
Thanks, Bill
On Apr 3, 3:02 am, Frederick Cheung
<frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> On Apr 3, 3:19 am, zambezi
<b.but...-GrTI0ftTvuWGJGYlWa3Ukdi2O/JbrIOy@public.gmane.org> wrote:
>
> > I thought I would set up a simple form for email noification to tinker
> > with and see how it worked However the simplicity part has so far
> > eluded me. Currently this particular page generates an error
"Need
> > controller and action!" when to my eyes everything is in order.
>
> The clue should be in the message - you''re not supplying a
> controller :-)
> Normally if you don''t supply the :controller option then the
current
> one is implicit, but things are different when rendering an email.
>
> Fred
--~--~---------~--~----~------------~-------~--~----~
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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2009-Apr-03 22:43 UTC
Re: url (view > controller) error "Need controller and action!"
On Apr 3, 10:13 pm, zambezi <b.but...-GrTI0ftTvuWGJGYlWa3Ukdi2O/JbrIOy@public.gmane.org> wrote:> The punt didn''t go far. This "fix" perhaps not unexpectedly resulted > in the next error: "ActionController::InvalidAuthenticityToken". > > Sooo, I''m at the deep end of the pool here. I really didn''t want to > learn all about authenticity tokens at this stage of my learning > ruby. Any further suggestions will be much appreciated as to how to > get past this error. >Very short version: to protect against CSRF attacks, forms generated by rails have a hidden input with a magic token. Together with the session this helps verify that a request isn''t been faked by a CSRF attack. With the protect_against_forgery returning false thing you''ve stopped your form trying to make such a token, but you still need to make the other end not expect a token. One way is to make your form use the GET method, another is to skip the verify_authenticity_token filter in the appropriate controller. Fred --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@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 -~----------~----~----~----~------~----~------~--~---
zambezi
2009-Apr-06 19:24 UTC
Re: url (view > controller) error "Need controller and action!"
Hello Fred, With Ruby and Rails a whole new experience its sometimes difficult to even frame a coherent question. So thank you your answers and for going a step further and adding some very helpful explanation. It clarified my thinking Since I don''t want to operate without protect_against_forgery and implementing a workaround isn''t where I need to be spending time now, I searched about and came across some exmaples of a ''tableless'' arrangement that implemented well with some minor modification. Thanks again. Bill On Apr 3, 5:43 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Apr 3, 10:13 pm, zambezi <b.but...-GrTI0ftTvuWGJGYlWa3Ukdi2O/JbrIOy@public.gmane.org> wrote: > > > The punt didn''t go far. This "fix" perhaps not unexpectedly resulted > > in the next error: "ActionController::InvalidAuthenticityToken". > > > Sooo, I''m at the deep end of the pool here. I really didn''t want to > > learn all about authenticity tokens at this stage of my learning > > ruby. Any further suggestions will be much appreciated as to how to > > get past this error. > > Very short version: to protect against CSRF attacks, forms generated > by rails have a hidden input with a magic token. Together with the > session this helps verify that a request isn''t been faked by a CSRF > attack. With the protect_against_forgery returning false thing you''ve > stopped your form trying to make such a token, but you still need to > make the other end not expect a token. One way is to make your form > use the GET method, another is to skip the verify_authenticity_token > filter in the appropriate controller. > > Fred--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---