рельсы f.number_field против number_field_tag - PullRequest
0 голосов
/ 27 февраля 2019

Я работаю над этой формой, пытаюсь заполнить мои значения Hash и отправить его через параметры в мой контроллер:

<%= form_for(cash_count) do |f| %>
   ....
   <%= f.label "200 bills", :class => "input-group-addon" %>
   <%= number_field_tag "vals[b200]", :class => "form-control" %>

Если я правильно понимаю, number_field_tag ​​отправляет пару результатов поля в params (работает нормально), а f.number_field отправляет пару результатов поля в params.cash_count (не может заставить это работать).

Я не могу сделать это с f.number_field хотя.

Я пытаюсь

<%= f.number_field 'vals["b200"]', :class => "form-control" %>

и получаю

undefined method `vals["b200"]' for #<CashCount:0x007f371a756068> 

Хотя в irb этот синтаксис выглядит так:справа:

2.4.0 :028 > d = CashCount.new 

2.4.0 :029 > d.vals = c.vals

2.4.0 :031 > d.vals
 => {"b200"=>"3"} 

2.4.0 :033 > d.vals["b200"]
 => "3"   

УТОЧНЕНИЕ: я сначала отправил этот вопрос со столбцом «vals» в другом имени - «значения».Я столкнулся с некоторыми проблемами, потому что он похож на метод Hash.values, поэтому я изменил его на «vals».

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Это сработало бы, если вы действительно хотите использовать number_field вместо number_field_tag. Внутренне реализация этих помощников немного отличается

<%= form_for(cash_count) do |f| %>
    ....
    <%= f.label "200 bills", :class => "input-group-addon" %>
    <%= f.fields_for :values do |n|%>
        <%= n.number_field :b200 , :class => "form-control" %>
    <% end %>
<% end %>

, что дает вывод типа

"cash_count" => {"values" => {"b200" => "3"}}
0 голосов
/ 27 февраля 2019

Вы можете использовать параметр value для предварительного ввода значений

<%= f.number_field :my_attribute, value: f.object.values['b200'], class: '...' %>
...