Я пытаюсь обновить одно поле нескольких записей в модели Lead. Каждый вывод отображается в строке таблицы, и поле, которое изменяется для нескольких строк, «выбрано», которое является логическим, сохраняется как tinyint 1 или 0, true или false.Rails - Как обновить несколько записей через форму из действия списка?
leads_controller.rb
def list
@leads = Lead.where({:store_number => session[:store_number]}).order("selected DESC")
@targeted_leads = Lead.where(:store_number => session[:store_number], :selected => true)
end
def update_multiple
@leads = Lead.find(params[:lead_ids])
@leads.update(params[:lead_ids])
redirect_to(:action => 'list')
end
list.html.erb
<%= form_tag update_multiple_leads_path, :method => :put do %>
<table>
<thead>
<tr>
<th>Lead Name</th>
<th>Selected Leads</th>
</tr>
</thead>
<tbody>
<% for lead in @leads %>
<tr>
</td>
<td><%= lead.company_name %></td>
<td>
<%= fields_for("lead_ids[]", lead) do |f| %>
<%= f.check_box("selected") %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<%= submit_tag('Save Targeted Leads', :class => "btn") %>
<% end %>
Теперь, что я хочу эту форму, чтобы сделать, это пройти все проходит через, и если флажок установлен, обновление это «выбранное» поле записи в 1, и если он снят, обновите поле до 0.
Когда он проходит долго, вот результаты по действию update_multiple:
ArgumentError in LeadsController#update_multiple
Unknown key: 6
Rails.root: (my/rails/root)
Application Trace | Framework Trace | Full Trace
app/controllers/leads_controller.rb:73:in `update_multiple'
Request
Parameters:
{"commit"=>"Save Targeted Leads",
"lead_ids"=>{"6"=>{"selected"=>"1"},
"1"=>{"selected"=>"0"},
"3"=>{"selected"=>"0"}},
"authenticity_token"=>"ALYtIkJNsAANsHXaAvgeb84G9Ms7OPSkyFO6jkM19yU=",
"_method"=>"put",
"utf8"=>"\342\234\223"}
FYI: (строка 73 ссылок эта строка в мой контроллер: @leads = Lead.find(params[:lead_ids])
) Когда я смотрю на это, похоже, он проходит все вместе, так же, как я 'd хочу, чтобы это ... Lead Model, взять id 6, установить выбранный в 1. Теперь возьмите id 1, установите выбранное значение 0. Что действительно меня смущает, так это бит «Неизвестный ключ». Мои первоначальные мысли состоят в том, что они не ищут подходящего поля для изменения ... как, он знает, что я ищу «6», но как насчет «6»? «6» не является ключом. Id 6 или что-то еще? Кто-нибудь еще решил это? Заранее благодарю за ваши мысли.
Держу пари, ты на месте ... http://stackoverflow.com/questions/8877737/recursively-convert-all-numeric-strings-to-integers-in-a-ruby-hash Это решение поможет решить мою проблему, но я не вижу fixnumify в любом месте документации Ruby, а при определении fixnumify он вызывает этот метод изнутри ...? Любая идея, как это сделать?Я хочу преобразовать все числовые строки в хеш в целые числа. – DerektheDev
Пожалуйста, см. Выше ... новый для переполнения стека, не понимал, что не уведомляет вас. – DerektheDev