繁体   English   中英

Rails 'params' 变量

[英]Rails 'params' variable

参考这个

我在这样的网络表单中创建了一个问题:

<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>

因此,如果场景和 private_messages 被检查并且我打印出params[:features]我将得到:scenesprivate_messages

我想知道如何才能从参数中单独获取场景和 private_messages。 映射params[:features] = "scenariosprivate_messages"还是真的params[features] = ["scenarios", "private_messages"] 如果是后者,我该如何循环它们?

我在我的观点中写道:

<%= params[:features].each {|param|
    param.capitalize
} %>

而且我仍然只是打印scenariosprivate_messages私有消息。

试试这个:

<% params[:features].each do |param| %>
  <%= param.capitalize %>
<% end %>

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

您不应该在视图中使用params 您最好将params[:features]分配给 controller 中的实例变量,然后在您的视图中对其进行迭代。

但是要回答您的问题,您将 output 的等号放在错误的位置。 您希望 output 单独地数组的每个元素,而不是输出循环的结果。

你必须使用humanize

<% params[:features].each do |param| %>
  <%= param.humanize %>
<% end %>

根据这篇博客文章,您应该能够以params[:features]['scenarios']等的形式单独访问它们。循环应该与所有其他 arrays 一样工作——例如

params[:features].each { |param|
# do something with param
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM