2011-08-09 29 views
7

Tôi vừa phát hiện ra đá quý rails-settings và bây giờ tôi cần phải tạo trang quản trị cho phép tôi chỉnh sửa các giá trị cài đặt. Làm cách nào để tạo bộ điều khiển cài đặt với chế độ xem chỉnh sửa có thể thay đổi các cài đặt ứng dụng động này?Làm cách nào để tạo trang cấu hình cài đặt cho đá quý cài đặt đường ray?

+1

Không phải là người duy nhất tìm kiếm – mhenrixon

Trả lời

6

Tôi đã không sử dụng đá quý này nhưng có vẻ như nó nên được khá thẳng về phía trước. Kể từ khi nó sử dụng một mô hình cơ sở dữ liệu sao lưu, bạn chỉ cần tạo một bộ điều khiển như bình thường:

rails g controller Settings 

Từ đây bạn sẽ xác định action index của bạn để thu thập tất cả các thiết lập cá nhân của bạn để hiển thị trong giao diện:

def index 
    @settings = Settings.all 
end 

Sau đó, trong giao diện, bạn có thể thiết lập một vòng lặp để hiển thị chúng:

<% @settings.each do |setting| %> 
    <%= setting.var %> = <%= setting.value %> 
<% end %> 

theo như chỉnh sửa ... đây có thể là một chút khó khăn kể từ khi bằng đường ray mặc định mong chờ bạn gửi chỉ có một settin g tại một thời điểm để chỉnh sửa. Bạn có thể làm theo cách này nhưng trừ khi bạn thực hiện chỉnh sửa với ajax nó có thể là tẻ nhạt và không trực quan.

Một cách khác là thiết lập phương thức cập nhật để chấp nhận tất cả các cài đặt riêng lẻ cùng một lúc, lặp lại và cập nhật từng cài đặt với giá trị mới. Nó có thể giống như thế này:

// The /settings route would need to be setup manually since it is without an id (the default) 
<%= form_tag("/settings", :method => "put") do %> 
    <% @settings.each do |setting| %> 
    <%= label_tag(setting.var, setting.var) %> 
    <%= text_field_tag(setting.var, :value => setting.value) %> 
    <% end %> 
    <%= submit_tag("Save Changes") %> 
<% end %> 

này nên đầu ra tất cả các thiết lập (cho họ đã được gán cho @settings biến) với tên var như nhãn và giá trị hiện tại là giá trị trường văn bản. Giả sử rằng định tuyến được thiết lập, khi bạn gửi biểu mẫu này, hành động nhận được tất cả các cài đặt mới trong biến params. Sau đó, bạn có thể làm điều gì đó như thế này trong hành động:

Đây có thể là cách tốt nhất tùy thuộc vào tần suất bạn chỉnh sửa cài đặt và số lượng cài đặt bạn có ... nhưng đây là giải pháp khả thi.

+0

Holy crap này, eval là một lá cờ lớn. Nếu bạn định làm như vậy, bạn có thể sử dụng một 'send' và loại chi tiết cài đặt thuộc tính đó sẽ được thực hiện từ bên trong mô hình Cài đặt của bạn nếu bạn định làm điều đó. Không cho khả năng hiển thị bộ điều khiển của bạn vào các hoạt động bên trong của một mô hình. – unflores

2

Tôi đang tìm kiếm một số gợi ý cho điều này và tìm thấy một câu trả lời cho điều này rất đơn giản và thanh lịch, cho bất kỳ ai tìm kiếm điều này sau này. Nó chỉ thiết lập các trình truy cập động trong mô hình của bạn, cho phép biểu mẫu của bạn có các trường cài đặt giống như các thuộc tính bình thường của bạn. Một ví dụ có thể được tìm thấy trong các câu trả lời ban đầu:

How to create a form for the rails-settings plugin

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