Tôi có một số đường ray tiêu chuẩn kiểm chứng thực trong mô hình của tôi:Rails không tạo xác nhận thất bại điệp
validates_presence_of :url_string
validates_uniqueness_of :url_string
validates_presence_of :stream_source
validates_presence_of :width
validates_presence_of :height
validates_presence_of :name
validates_uniqueness_of :name
validates_presence_of :customer_name
validates_presence_of :iframe_background_color
Nếu tôi không điền vào một trong các lĩnh vực này trong hình thức của tôi sau đó tôi đưa trở lại dưới hình thức như mong đợi nhưng điều kỳ lạ là không có thông báo lỗi nào được hiển thị. Tôi đang sử dụng mã dưới đây để hiển thị các thông báo lỗi:
<% @camera.errors.full_messages.each do |error| %>
<p><%= error %></p>
<% end %
Tôi cũng đã cố gắng để in ra camera.errors @ đối tượng và đây là những gì được thể hiện:
#<ActiveModel::Errors:0x12db19bc @base=#<Camera id: 1, stream_source: "test", width: 640, height: 360, active: true, name: "test", url_string: "CAYD19Vp", customer_name: "test", iframe_background_color: "#FFFFFF", online: true, created_at: "2011-08-30 15:54:16", updated_at: "2011-09-06 15:52:48", audio: true, iframe_text_color: "#FF00FF", iframe_link_color: "#FF0000", notes: "Some notes!", offline_image_file_name: "Cake.jpg", offline_image_content_type: "image/jpeg", offline_image_file_size: 196591, offline_image_updated_at: "2011-09-06 12:12:38", pull_stream_url: "test", bitrate: "300-500", show_branding: false>, @messages={}>
Như bạn có thể thấy băm thông điệp trống. Tôi đã thử đặt thông báo lỗi xác thực theo cách thủ công bằng cách thực hiện các thao tác sau:
nhưng cũng không điền vào băm thư.
điều khiển cập nhật hành động được hiển thị bên dưới:
def update
@camera = Camera.find(params[:id])
if @camera.update_attributes(params[:camera])
flash[:notice] = "Camera updated"
redirect_to nwcadmin_camera_path
else
redirect_to :action => :edit
end
end
Tôi đang sử dụng phiên bản của Ruby ruby 1.9.2p290 và Rails phiên bản 3.1.0.
Mọi hỗ trợ sẽ tuyệt vời!
Cảm ơn
Mã điều khiển có thể hữu ích ở đây. – jdl
Cảm ơn, tôi đã thêm hành động cập nhật bộ điều khiển. – stephenheron
Tôi đã cố gắng tìm hiểu vấn đề của mình nhưng tôi không thể trả lời câu hỏi của mình trong 7 giờ nữa. Tôi sẽ đưa ra giải pháp ở đây trong thời gian này. Trong bộ điều khiển tôi đã sử dụng: redirect_to: action =>: chỉnh sửa tôi nên đã được sử dụng: render: action =>: chỉnh sửa Bằng cách sử dụng redirect_to tôi đã nhấn hành động chỉnh sửa trong bộ điều khiển mà là sau đó nhận một đối tượng máy ảnh mới từ cơ sở dữ liệu thay vì bảo toàn đối tượng máy ảnh khỏi hành động cập nhật. – stephenheron