유효성 검사를 했음에도 불구하고 자동으로 실패한 관리자 사용자의 경우 레일스 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| %>
모두 제대로로드되지만 저장하려고하면 내 유효성 검사가 무시되고 다음으로 리디렉션됩니다. 인덱스 페이지에는 성공 메시지가 있지만 데이터는 저장하지 않습니다. 네임 스페이스와 관련이 없다는 느낌이 들지만 문제가 무엇인지 완전히 확신 할 수는 없습니다. 기본 모델 디렉토리에서 모델을 찾을 수 있습니까?
맞아요, 그들은 비어 있습니다. 어떤 검증도 실행되지 않기 때문에 네임 스페이스 문제라고 생각합니다. – VirtuosiMedia
유효성 검사는'@ admin.update_attributes (nil)'에 대해 불평하지 않습니다. – iltempo
대신 Admin :: Admin 모델이 매개 변수에서 어떻게 사용되는지 알아보십시오. 테스트하지 않았지만'params [ 'admin :: admin'] 같은 것을 상상할 수 있습니다. – iltempo