开发者

need to create a helper for rails 3

I need to create some type of helper for a form where it will create a select for each day of the week.

Below, creates the 5 instances, but only submits the last one.

def basic_question(q)
   a = ""
   5.times do 
     a << select("question[question_id_#{q.id}]", :response, (0..30).to_a) + " for #{q.survey.publish_on.strftime('%A')} #{q.survey.publish_on.strftime('%D')} <br />"
   end
   return a.html_safe
end

EDIT

Here is the view to take the survey

<%= form_for store_survey_path(@survey) do |f| %>
<% hidden_field.user_id, :value => current_user.id %>

<% @survey.questions.each do |q| %>

  <li><%= q.content %></li>
  <%= question_helper(q) %>

<% end %>
<p><%= f.submit %></p>
<% end %>

And the helper that checks for the type of question it is.

def question_helper(question)
    case question.question_type
 开发者_运维技巧   when 'basic'
      return basic_question(question)
    when 'fill_in'
      return fill_in_question(question)
    when 'scale_5'
      return "should return a scale of 5"
    when 'scale_10'
      return "should return a scale of 10"
    when 'must_choose_answer'
      return question.answers.to_s
    when 'just_label'
      return " I will be a label"
    else
      return "Couldn't find in helper"
    end
  end


You could either go with giving the separate selects different names so that they are submitted separately, or you could submit them all as an array. I would go with the last option.

To submit them as an array, you have to add [] to the end of the select name like this:

question[question_id_#{q.id}][]

Which would end up looking like this:

a << select("question[question_id_#{q.id}][]", :response, (0..30).to_a) + " for #{q.survey.publish_on.strftime('%A')} #{q.survey.publish_on.strftime('%D')} <br />"

I hope that helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜