Переменная 'params' в Rails - PullRequest
       11

Переменная 'params' в Rails

1 голос
/ 08 марта 2009

В отношении это

Я создал вопрос в веб-форме:

<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], я получу: scenariosprivate_messages

Мне было интересно, как я смогу получить сценарии и private_messages отдельно от params. Это отображение params[:features] = "scenariosprivate_messages" или действительно params[features] = ["scenarios", "private_messages"]? Если это последний, как я могу пройти через них?

Я пишу на мой взгляд:

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

а я все еще просто печатаю scenariosprivate_messages.

Ответы [ 4 ]

12 голосов
/ 08 марта 2009

Попробуйте вместо этого:

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

Проблема с вашим исходным решением состоит в том, что вы распечатываете результат блока, которым является сам массив, а не распечатываете каждый элемент массива.

9 голосов
/ 08 марта 2009

Вы не должны использовать params в своих представлениях. Лучше всего назначить params[:features] переменной экземпляра в вашем контроллере, а затем выполнить итерацию по вашему мнению.

Но чтобы ответить на ваш вопрос, вы ставите знак равенства для вывода не в том месте. Вы хотите выводить каждый элемент массива отдельно, а не выводить результат цикла.

2 голосов
/ 08 марта 2009

Вы должны использовать humanize:

<% params[:features].each do |param| %>
  <%= param.humanize %>
<% end %>
0 голосов
/ 08 марта 2009

Согласно этому сообщению в блоге вы должны иметь возможность обращаться к ним индивидуально как params[:features]['scenarios'] и т. Д. Циклы должны работать так же, как и со всеми другими массивами - например,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...