我剛剛發現了rails-settings寶石,現在我需要製作一個管理頁面,讓我編輯設置值。如何使用可以更改這些動態應用程序範圍設置的編輯視圖創建設置控制器?如何爲rails-settings gem創建設置配置頁面?
回答
我沒有使用這個寶石,但它似乎應該是相當直接。由於它採用了數據庫備份模式,您只需創建一個控制器正常:
rails g controller Settings
在這裏,您將定義您的索引操作來收集你的所有個人設置在視圖中顯示:
def index
@settings = Settings.all
end
然後在視圖中,可以設置一個循環來顯示他們:
<% @settings.each do |setting| %>
<%= setting.var %> = <%= setting.value %>
<% end %>
至於編輯...這可能是有點棘手,因爲在默認情況下軌會希望你提交一個設置搜索g一次編輯。你可以這樣做,但除非你用ajax實現編輯,否則它可能是乏味和非直觀的。
另一種方法是將您的更新方法設置爲一次接受所有單個設置,循環並使用新值更新每個設置。它可能是這個樣子:
// 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 %>
這應該輸出的所有設置(因爲它們已經被分配到@settings變量)與變數名稱作爲標籤和電流值作爲文本字段值。假設路由設置完成,當你提交這個表單時,接收它的動作應該包含params變量中的所有新設置。然後,你可以做這樣的事情在行動:
def update
params.each_pair do |setting, value|
eval("Settings.#{setting} = #{value}")
end
redirect_to settings_path, :notice => 'Settings updated' # Redirect to the settings index
end
這可能不是取決於你如何經常編輯設置,你有多少設置有最好的辦法......但是這是一個可能的解決方案。
哇靠,EVAL是一個重大的標誌。如果你打算做這樣的事情,你可以使用'send',並且如果你打算這樣做,那麼應該在Settings模型中實現這種屬性設置細節。不要讓你的控制者看到模型的內部運作。 – unflores
我一直在尋找這方面的一些建議,並找到了對此非常簡單和優雅的另一個答案,對於任何後來尋找這個。它只是在您的模型中設置動態訪問器,允許您的表單具有與常規屬性相同的設置字段。一個例子可以在原來的答案中找到:
- 1. 創建設置頁面
- 2. 設計,如何創建一個編輯配置文件頁面
- 3. 使用Storytime Gem設置前頁面
- 4. 如何創建頁內配置。通過c:設置?
- 5. 如何爲我的自定義插件創建設置頁面?
- 6. 如何爲Windows 8.1應用程序創建設置頁面?
- 7. 如何通過Ruby Gem創建頁面?
- 8. Rails 4 - 創建設置頁面
- 9. 如何爲gem測試配置rspec&mongoid?
- 10. 如何設置DIV頁面
- 11. 如何爲任何exe創建設置?
- 12. 如何爲phpMyAdmin創建配置文件?
- 13. 如何創建配置類
- 14. 如何在按鈕上創建制表符和設置頁面?
- 15. 低級PDF創建 - 如何設置頁面大小?
- 16. 如何在php中創建新的管理設置頁面
- 17. 爲設備ID創建設置配置文件
- 18. 創建一個C#應用程序來配置打印機頁面設置
- 19. 如何使用parallel_tests設置配置文件gem
- 20. 爲用戶創建獨特的配置文件頁面
- 21. 如何爲pdf創建設置server.mapath?
- 22. 如何創建MSI設置?
- 23. Magento創建一個菜單併爲其設置頁面
- 24. 如何爲PHP配置文件頁面創建縣/人的URL結構
- 25. 如何創建maven配置文件來設置系統屬性
- 26. Qt如何創建設置/配置窗口
- 27. ASP.NET配置頁面
- 28. 如何爲設計用戶創建配置文件?
- 29. 如何爲我的用戶使用具有不同配置設置的Gem
- 30. 如何爲NonexistentConversationException配置錯誤頁面位置?
不是唯一一個尋找這個 – mhenrixon