'Неизвестный ключ (и)' ArgumentError

Я работаю над функцией модерации для своего приложения, которая основана на базовой структуре скаффолда. Что мне нужно, так это отредактировать несколько записей с логическим параметром , опубликованным на false . В Moderate.html я получаю список всех неопубликованных записей с возможностью изменения их параметров , которые опубликованы , what и . Ошибка появляется, когда я пытаюсь сохранить изменения с помощью действия complete .

ArgumentError в NamesController # complete

Неизвестный ключ (и): 7, 1, 4

«7, 1, 4» - это идентификаторы моих неопубликованных записей.

Вот части моего кода:

#names_controller.rb

    def moderate
     @names = Name.find(:all, params[:name_ids], :conditions => {:published => false})
      respond_to do |format|
        format.html { render :action => "moderate" }
         format.xml 
       end
     end

def complete
     @names = Name.find(params[:name_ids])
     @names.each do |name|
       name.update_attributes!(params[:name].reject { |k,v| v.blank? })
     end
     flash[:notice] = "Updated records!"
     redirect_to names_path
   end


#moderate.html.erb
<% form_tag complete_names_path do %>  
  <% @names.each do |name| %>
    <fieldset>
    <% fields_for "name_ids[#{name.id}]", name do |name_fields| %>
    <%= name_fields.text_field :which %>
    <%= name_fields.text_field :what %>
    <%= name_fields.check_box :published %> 
    <% end %>
    </fieldset>   
  <% end %>  
<%= submit_tag "Ok" %>
<% end %>/


#routes.rb
ActionController::Routing::Routes.draw do |map| 
  map.connect 'moderate', :controller => 'names', :action => 'moderate'
  map.resources :names, :collection => { :complete => :put}
  map.root :names
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

Я понимаю, что что-то не так с name_ids , но не понимаю , что я должен делать. Заранее спасибо.

ruby ​​1.8.7 (12.06.2009, patchlevel 174)

[universal-darwin10.0] Rails 2.3.5

Журнал Rails для умеренных и полных действий:

Processing NamesController # умеренный (для 127.0.0.1 at 2010-10-16 21:36:42) [GET] [4; 35; 1 мНагрузка (0,6 мс) [0 м [0mSELECT * FROM "names" ГДЕ ("имена". "опубликовано" = 'f') [0 мин. Шаблон отрисовки внутри макеты / имена Отображение имен / модерация Завершено за 12 мс (Просмотр: 7, БД: 1) | 200 OK [http: // localhost / Moderate]

Обработка NamesController # завершена (для 127.0.0.1 в 2010-10-16 21:36:49) [POST] Параметры: {"commit" => "Ok", "Authentity_token" => "CtmsjIavksOMSIArrdovkkzuZzHVjkenFFMO5bHIvgg =", "name_ids" => {"7" => {"published" => "0", "what" => "Партия", "which" => "Крутая"}, "1" => {"опубликовано" => "1", "what" => "Россия", "which" => "Единая"}, "4" => {"опубликовано" => "0", "what" => "Организация", "which" => "Молдавская"}}}
[4; 36; 1 м Нагрузка (0,4 мс) [0 м
[0; 1mSELECT * FROM "names" ГДЕ ("names". "id" IN (7,1,4)) [0m

NoMethodError (У вас есть объект nil когда ты этого не ожидал! Ты можешь ожидали экземпляра Array. Ошибка произошла при оценке nil.reject):
приложение / контроллеры / names_controller.rb: 47: в завершено '
приложение / контроллеры / names_controller.rb: 46: в
каждый »
приложение / контроллеры / names_controller.rb: 46: в `complete '

Рендеринг спасает / _trace (110,3 мс) Визуализированные спасения / _request_and_response (0,5 мс) Рендеринг спасает / макета (internal_server_error)

1
задан Maay 16 October 2010 в 17:41
поделиться