Rails newbie: passing a value to hidden form field, then getting it

Warning: I am as green as #00FF00 with rails :slight_smile:

I have an rhtml view that shows a survey: /views/survey/show.rhtml. I
have a Survey model, helper and controller. I'm using the
acts_as_commentable plugin to collect comments, and trying to save
user comments from users who have taken a survey (don't ask -- it's
just a test).

To save the comment, I need the id of the survey, which I have when I
show the page originally (but which is gone when the user hits the
submit button to save their comment. So I am just trying to save the
survey id in a hidden field associated with the form.

In the show.rhtml, I have:

  <% form_for :comment, @survey, :url => { :action => :save_comment }
do |form| %>
    <%= form.hidden_field "survey", "#{@survey.id}" %>
    ...
  <% end %>

Which results in "ActionView::TemplateError (undefined method `merge'
for "1":String)". 1 is the id of the survey, so I am close. I tried
numerous variations of passing values via form_for to a hidden field.

Question 1: How to pass the value so I can get at it when the user
hits submit

In the survey_controller.rb I have

  def save_comment
    @comment = Comment.new(params[:comment])
    logger << "COMMENT #{@comment.comment}\n"
    # @survey = Survey.find(???) # somehow I need to get that
survey id so I can do the next line
    @survey.add_comment(@comment)
  end

Question 2: what magic do I need to get at the value in the hidden
field?

Like I said, I am a noob.

Thanks for your tolerance of my ignorance.

Tom

Warning: I am as green as #00FF00 with rails :slight_smile:

heh, me too :slight_smile: but...

submit button to save their comment. So I am just trying to save the
survey id in a hidden field associated with the form.

In the show.rhtml, I have:

  <% form_for :comment, @survey, :url => { :action => :save_comment }
do |form| %>
    <%= form.hidden_field "survey", "#{@survey.id}" %>

Per the doc:
<http://api.rubyonrails.com/classes/ActionView/Helpers/FormHelper.html#M000496>

:: a hidden_field takes the same args as a text_field, namely:

  text_field(object_name, method, options = {})

So I think you need something like:

  hidden_field( "comment", "survey", { :value => @survey.id } )

No warranty, express or implied, as they say :slight_smile:

HTH!