【问题标题】:get a hash of params with form_tag使用 form_tag 获取参数哈希
【发布时间】:2014-02-21 07:45:01
【问题描述】:

我一直在寻找我的问题的答案,到目前为止没有任何成功......

我想在提交表单后将一些参数分组到哈希中,我希望它看起来像:

“我的调查”=>{ {"我的问题1"=>["我的第一个答案","我的第二个答案","我的第三个答案"]}, {“我的问题2”=>[“我的另一个第一个答案”,“我的另一个第二个答案”,“我的另一个第三个答案”]} }

<%= form_tag (@survey) do |f| %>

      my first question: <%= text_field_tag "survey[mysurvey][]" %>
      answer: <%= text_field_tag "survey[mysurvey][]" %>
      answer: <%= text_field_tag "survey[mysurvey][]" %>
      answer: <%= text_field_tag "survey[mysurvey][]" %>

      my second question: <%= text_field_tag "survey[mysurvey][]" %>
      answer: <%= text_field_tag "survey[mysurvey][]" %>
      answer: <%= text_field_tag "survey[mysurvey][]" %>
      answer: <%= text_field_tag "survey[mysurvey][]" %>
<%= submit_tag "envoyer" %>

考虑到 mysurvey 是调查模型的独特属性。

我找不到将每个问题分组为各自答案的方法,这可能吗? 如果您有任何想法或解决此问题,请告诉我! 非常感谢! 马特

【问题讨论】:

    标签: arrays forms ruby-on-rails-4 hash


    【解决方案1】:

    我想您想花一些时间阅读表单指南的这一部分:http://guides.rubyonrails.org/form_helpers.html#understanding-parameter-naming-conventions

    如果不进一步了解模型,很难从您的问题中知道正确答案,但我认为您正在寻找的是这样的:

      my first question: <%= text_field_tag "survey[mysurvey][question1]" %>
      answer: <%= text_field_tag "survey[mysurvey][question1][]" %>
      answer: <%= text_field_tag "survey[mysurvey][question1][]" %>
      answer: <%= text_field_tag "survey[mysurvey][question1][]" %>
    
      my second question: <%= text_field_tag "survey[mysurvey][question2]" %>
      answer: <%= text_field_tag "survey[mysurvey][question2][]" %>
      answer: <%= text_field_tag "survey[mysurvey][question2][]" %>
      answer: <%= text_field_tag "survey[mysurvey][question2][]" %>
    

    但是,上述每个答案中的问题元素 survey[mysurvey][question1] 取决于您的模型的结构;其余的将为您提供您正在寻找的数据格式。

    循环遍历模型的更好方法是:

    <%= form_for @survey do |survey_form| %>
      <%= survey_form.text_field :question %>
      <% @survey.questions.each do |question| %>
        <%= survey_form.fields_for question, index: question do |question_form|%>
          <%= question_form.text_field :answer %>
        <% end %>
      <% end %>
    <% end %>
    

    【讨论】:

    • 感谢布莱恩!这正是我正在寻找的,在表单中传递哈希非常有用,但是现在我遇到了强参数的问题:#params.require(:survey).permit(mysurvey:[][ ]) 或 params.require(:survey).permit(mysurvey:[]) 有效...错误的数字或参数...您将如何解决此问题?谢谢!
    • 你想这样称呼他们:(:mysurvey => []) 看看这里的自述文件:github.com/rails/strong_parameters
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2021-08-21
    • 2013-07-27
    相关资源
    最近更新 更多