두 개의 레일 애플리케이션이 있습니다. 내 목표는 ActiveResource를 통해 두 번째 Rails 애플리케이션에 정보를 저장하는 연락처 양식이있는 하나의 Rails 애플리케이션을 얻는 것입니다. 유효성 검사없이 리소스를 얻을 수 있지만 유효성 검사를 추가하면 오류 메시지가 양식과 함께 Rails 응용 프로그램에 표시되지 않습니다.어떻게 ActiveResource를 통해 유효성 검사 오류를 수신하지 못합니까?
class CustomerTicket < ActiveRecord::Base
validates_presence_of :first_name, :last_name, :email, :phone, :address1, :address2,
:city, :state, :postcode, :question
validates_length_of :phone, { :minimum => 7}
validates_format_of :email, { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message => 'Please include a proper e-mail address.' }
end
그리고 컨트롤러 : 데이터베이스를 가진 레일 응용 프로그램은 그래서 CustomerTicket 모델 설정을 가지고
class CustomerTicketsController < ApplicationController
load_and_authorize_resource
skip_authorization_check :only => [:new, :create]
skip_authorize_resource :only => [:new, :create]
def index
@q = CustomerTicket.search(params[:q])
@customer_tickets = @q.result.order('created_at DESC').page params[:page]
respond_to do |format|
format.html # index.html.erb
end
end
def show
@customer_ticket = CustomerTicket.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
end
def new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @customer_ticket }
end
end
# GET /customer_tickets/1/edit
def edit
end
# POST /customer_tickets
# POST /customer_tickets.json
def create
respond_to do |format|
if @customer_ticket.save
format.html { redirect_to @customer_ticket, notice: 'Customer ticket was successfully created.' }
format.json { render json: @customer_ticket, status: :created, location: @customer_ticket }
else
format.html { render action: "new" }
format.json { render json: @customer_ticket.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @customer_ticket.update_attributes(params[:customer_ticket])
format.html { redirect_to @customer_ticket, notice: 'Customer ticket was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
def destroy
@customer_ticket.destroy
respond_to do |format|
format.html { redirect_to customer_tickets_url }
end
end
end
* 참고 : 캉캉 내 자원
레일 앱을로드 및 구축 양식은 다음과 같이 해당 모델 설정을 갖습니다.
class CustomerTicket < ActiveResource::Base
self.site = "http://myurl:3000/"
end
나는 다음을 실행 ActiveResource 모델이 레일 응용 프로그램 :
ruby-1.9.2-p290 :001 > c = CustomerTicket.new(:first_name => "Josh")
=> #<CustomerTicket:0x007f7f89815528 @attributes={"first_name"=>"Josh"}, @prefix_options={}, @persisted=false>
ruby-1.9.2-p290 :002 > c.save
=> false
ruby-1.9.2-p290 :003 > c.valid?
=> true
ruby-1.9.2-p290 :004 > c.errors.count
=> 0
ruby-1.9.2-p290 :005 > c.errors
=> #<ActiveResource::Errors:0x007f7f88b165c0 @base=#<CustomerTicket:0x007f7f89815528 @attributes={"first_name"=>"Josh"}, @prefix_options={}, @persisted=false, @remote_errors=#<ActiveResource::ResourceInvalid: Failed. Response code = 422. Response message = Unprocessable Entity.>, @validation_context=nil, @errors=#<ActiveResource::Errors:0x007f7f88b165c0 ...>>, @messages={}>
은 그래서 기록이 저장되지 않는다는 것을 인식하고, 그러나 나는 오류 및 자사의 검증 여부에 액세스 할 수 없습니다. 내가 뭘 놓쳤는가?
레일 버전? – Fivell