2012-02-29 3 views
0

У меня есть форма для обновления в Rails 3 для пользователей admin, которые терпят неудачу, несмотря на наличие валидаций. Это было, работавшим ранее, но когда я переместил все в пространство имен, оно больше не сохраняется.Обновление не выполнено с помощью модели с именами

Вот соответствующий код из моего контроллера:

def update 
    @admin = Admin::Admin.find(params[:id]) 

    respond_to do |format| 
     if @admin.update_attributes(params[:admin]) 
      flash[:success] = "'#{@admin.name}' was successfully updated." 
      format.html { redirect_to admin_admins_path } 
     else 
      format.html { render action: "edit" } 
     end 
    end 
end 

И модель (незавершенной, но ранее работал):

class Admin::Admin < ActiveRecord::Base 
    validates :name, :presence=>{:message=>"Name can't be blank"} 
    validates :email, :presence=>{:message=>"Email can't be blank"}, 
     :length => {:minimum => 3, :maximum => 254, :message=>"Email must be between 3 and 254 characters"}, 
     :uniqueness=>{:message=>"Email has already been registered"}, 
     :format=>{:with=>/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message=>"Email must be a valid email format"} 
    validates :password, :presence=>{:message=>"Password can't be blank"} 
end 

И первая часть формы частичной:

<%= form_for(@admin) do |f| %> 

Все загружается правильно, но когда я пытаюсь сохранить, мои проверки игнорируются, и это перенаправляет на страницу с успешным сообщением, но не сохраняет данные. У меня такое чувство, что я пропускаю что-то с пространствами имен, но я не совсем уверен, в чем проблема. Может ли он искать модель в каталоге базовой модели?

ответ

1

Вы проверили параметры? Я мог представить, что params[:admin] больше не содержит значений форм.

+0

Правильно, они пусты. Я думаю, что это проблема пространства имен, поскольку проверки не выполняются. – VirtuosiMedia

+0

Валидации не жалуются на '@ admin.update_attributes (nil)'. – iltempo

+0

Попробуйте выяснить, как вместо этого используется параметр Admin :: Admin. Не тестировал, но я мог представить что-то вроде 'params ['admin :: admin']. – iltempo

0

Итак, VirtuosiMedia и я прошли через него, а RoR добавляет «admin_» для представления пространства имен Admin ::, поэтому нам пришлось искать params [: admin_admin].

Смежные вопросы