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