2009-01-15 17 views
7

Sử dụng Ruby on Rails Tôi muốn có một trang xác nhận trước khi tạo đối tượng ActiveRecord. Người dùng sẽ thấy bản xem trước của mục họ đang tạo trước khi gửi và đối tượng được lưu trong cơ sở dữ liệuRuby on Rails: Trang xác nhận để tạo đối tượng ActiveRecord

Một mẫu chung;

  • lần User/entry/mới
  • tài đi vào chi tiết và nhấp chuột nộp
  • người dùng được chuyển hướng đến/entry/xác nhận hiển thị các mục nhập và nhấp chuột nộp hoặc chỉnh sửa để sửa chữa sai lầm
  • Object được lưu

Bạn sẽ triển khai nó như thế nào?

Trả lời

0

Tôi không chắc chắn cách thực hiện điều này (RoR là mới đối với tôi) nhưng bạn chỉ có thể chỉ định hành động cho/mới là/xác nhận và sau đó nó tạo ra.

Phải không?

3

Một vài lựa chọn

1- cửa hàng đối tượng bạn muốn tạo trong phiên cho đến khi bạn nhấn trang xác nhận, sau đó chỉ cần lưu nó

2- vượt qua xung quanh đối tượng w/mỗi bài viết/nộp từ mới -> chi tiết -> xác nhận

Tôi có thể đi với 2, vì tôi không dễ để tiết kiệm tiểu bang với phiên.

5

Một tùy chọn khác để giải quyết sự cố này do thuộc tính xác nhận ảo thêm vào mô hình của bạn. Bằng cách này, bạn không cần phải tạo một hành động riêng cho việc này:


class MyRecord < ActiveRecord::Base 
    attr_accessor :confirmation 
    validates_acceptance_of :confirmation, :on => :create 
end 

Bây giờ, đối tượng mới của bạn sẽ không lưu chính xác vì xác thực sẽ không thành công trên trường xác nhận. Bạn có thể phát hiện tình trạng này và hiện một cái gì đó như thế này:


<% form_for(@my_record) do |form| %> 
    ... 
    <%= form.check_box :confirmation %> Really create this record. 
    <%= submit_tag('Confirm') %> 
<% end %> 
5

tôi có lẽ sẽ thêm một "xem trước" hành động để các tập tin routes.rb cho mô hình:

map.resource :objects, :new => { :preview => :post } 

Bạn sẽ nhận được để preview này hành động bằng cách đăng một tuyến đường có tên là preview_object_url. Bạn sẽ cần phải chủ yếu tạo ra các Object theo cách tương tự như bạn trong hành động create của bạn, như thế này:

def preview 
    @object = Object.new(params[:object]) 
end 

Trang này sau đó sẽ đường bưu điện đến create hành động, mà sau đó sẽ tạo ra đối tượng. Nó khá thẳng về phía trước.

http://api.rubyonrails.org/classes/ActionController/Resources.html

Các vấn đề liên quan