Rails'params'变量

ala*_*dey 1 parameters loops webforms ruby-on-rails

参考这个

我在这样的webform中创建了一个问题:

<div class="form_row">
        <label for="features[]">Features:</label>
        <% [ 'scenarios', 'role_profiles', 'private_messages', 'polls' ].each do |feature| %>
          <br><%= check_box_tag 'features[]', feature,
                  (params[:features] || {}).include?(feature) %>
        <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

因此,如果检查了scenario和private_messages并打印出来,params[:features]我会得到:scenariosprivate_messages

我想知道如何能够从params中分别获取方案和private_messages.是映射params[:features] = "scenariosprivate_messages"还是真的params[features] = ["scenarios", "private_messages"]?如果是后者我怎么能循环它们?

我写在我看来:

<%= params[:features].each {|param|
    param.capitalize
} %>
Run Code Online (Sandbox Code Playgroud)

我还是刚scenariosprivate_messages打印出来的.

Sar*_*Mei 12

试试这个:

<% params[:features].each do |param| %>
  <%= param.capitalize %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

原始解决方案的问题在于您打印出块的结果,即块本身,而不是打印出阵列的每个元素.


Jim*_*uls 9

你不应该params在你的观点中使用.您最好params[:features]在控制器中分配一个实例变量,然后在视图中迭代它.

但是要回答你的问题,你要把输出的等号放在错误的地方.您希望单独输出数组的每个元素,而不是输出循环的结果.