2012-02-29 3 views
0

유효성 검사를 했음에도 불구하고 자동으로 실패한 관리자 사용자의 경우 레일스 3에 업데이트 양식이 있습니다. 이전에 이었지만 모든 것을 네임 스페이스로 옮기면 더 이상 저장되지 않습니다.네임 스페이스 모델로 업데이트가 실패합니다.

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를 검사 했습니까? 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]을 찾아야했습니다.

관련 문제