2010-08-19 32 views
5

Tôi có biểu mẫu form_for và trong đó, tôi đang sử dụng hộp kiểm trợ giúp biểu mẫu. Mô hình có một trường là giá trị boolean, nhưng tôi muốn có thể hiển thị nó trên biểu mẫu của tôi về mặt trò chuyện của nó vì tôi nghĩ rằng người dùng dễ hiểu hơn.Ruby on Rails: Sử dụng form_for trên mô hình và lật giá trị biểu mẫu

Có cách nào để tôi có hành động trợ giúp biểu mẫu Rails giống như trường boolean của mô hình bị lật không?

Ví dụ:

<% form_for :user do |form| %> 
    <%= form.check_box :privacy_disabled %> 
<% end %> 

Trong ví dụ này, mô hình tài khoản có một trường boolean privacy_disabled. Tôi muốn hiển thị điều này trong biểu mẫu khi kiểm tra tại đây để bật tính năng bảo mật.

Chức năng trình trợ giúp hộp kiểm có khả năng đặt giá trị đã chọn và không được chọn, nhưng đảo ngược các giá trị này có vẻ không phù hợp với hộp kiểm có giá trị được lưu trước đó.

Trả lời

9

Đây là cách tôi đã kết thúc giải quyết vấn đề này, tôi đã thực sự gần gũi với nỗ lực đầu tiên của tôi:

<%= form.check_box :privacy_disabled, 
        {:checked => [email protected]_disabled}, 
        0, 
        1 %> 

Vì vậy, các giá trị được trả về bởi hộp kiểm lộn, và liệu nó bắt đầu ra kiểm tra được bằng tay búng như tốt.

6

Không phải là giải pháp thanh lịch nhất, nhưng bạn có thể làm điều gì đó như sau:

  1. Thêm những phương pháp để mô hình người dùng của bạn:

    def privacy_enabled=(val) 
        self.privacy_disabled = val == "0" 
    end 
    def privacy_enabled 
        !privacy_disabled 
    end 
    
  2. Thay đổi hình thức:

    <%= form.check_box :privacy_enabled %> 
    

Một lần nữa, không thanh lịch, nhưng nó hoạt động.

+0

Đây là giải pháp tốt; thật dễ dàng để đọc và hiểu ở tất cả các bên, và nó có thể dễ dàng được chuyển vào một số mã cụ thể của khung nhìn khi cần. –

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