2011-08-09 15 views
7

मैंने अभी rails-settings मणि खोजा है और अब मुझे एक व्यवस्थापक पृष्ठ बनाना है जो मुझे सेटिंग मानों को संपादित करने देता है। मैं एक संपादन नियंत्रक के साथ एक सेटिंग नियंत्रक कैसे बना सकता हूं जो इन गतिशील ऐप विस्तृत सेटिंग्स को बदल सकता है?रेल-सेटिंग्स मणि के लिए मैं सेटिंग्स कॉन्फ़िगरेशन पृष्ठ कैसे बना सकता हूं?

+1

इतना ही नहीं इस – mhenrixon

उत्तर

6

मैंने इस मणि का उपयोग नहीं किया है, लेकिन ऐसा लगता है कि यह काफी सीधे आगे होना चाहिए। चूंकि यह एक डेटाबेस समर्थित मॉडल का उपयोग करता, तो आप बस सामान्य रूप में एक नियंत्रक बनाना होगा:

rails g controller Settings 

यहाँ आप से अपनी अनुक्रमणिका कार्रवाई दृश्य में प्रदर्शित करने के लिए अपने सभी अलग-अलग सेटिंग इकट्ठा करने के लिए निर्धारित करना होगा:

def index 
    @settings = Settings.all 
end 

तब ध्यान में रखते हुए आप सेटअप एक पाश उन्हें प्रदर्शित करने के लिए कर सकते हैं:

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

जहाँ तक संपादन के रूप में ... इस के बाद से डिफ़ॉल्ट रेल द्वारा आप केवल एक settin प्रस्तुत करने के लिए उम्मीद करेंगे थोड़ा मुश्किल हो सकता है संपादित करने के लिए एक समय में जी। आप इसे इस तरह से कर सकते हैं लेकिन जब तक आप 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 को सौंपा गया है को देखते हुए)। यह मानते हुए कि रूटिंग सेटअप है, जब आप इस फॉर्म को सबमिट करते हैं तो उसे प्राप्त करने वाली क्रिया पैराम चर में सभी नई सेटिंग्स होनी चाहिए। तो फिर तुम कार्रवाई में कुछ इस तरह कर सकते हैं:

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 

यह सबसे अच्छा तरीका है कि आप कितनी बार सेटिंग संपादित करें और आप कितने सेटिंग है पर निर्भर करता है नहीं हो सकता है ... लेकिन यह एक संभव समाधान है।

+0

पवित्र बकवास की तलाश में, eval एक प्रमुख झंडा है। यदि आप ऐसा कुछ करने जा रहे हैं, तो आप 'प्रेषण' का उपयोग कर सकते हैं और यदि आप इसे करने जा रहे हैं तो उस प्रकार के विशेषता सेटिंग विवरण को आपके सेटिंग मॉडल के भीतर से कार्यान्वित किया जाना चाहिए। मॉडल के आंतरिक कार्यों में अपनी नियंत्रक दृश्यता न दें। – unflores

2

मैं इसके लिए कुछ सुझाव ढूंढ रहा था और इसके लिए एक और जवाब मिला जो कि बहुत आसान और सुरुचिपूर्ण है, किसी के लिए इसे बाद में ढूंढने के लिए। यह सिर्फ आपके मॉडल में गतिशील एक्सेसर्स सेट करता है, जिससे आपके फॉर्म में आपके सामान्य विशेषताओं की तरह सेटिंग फ़ील्ड हो सकते हैं। एक उदाहरण मूल जवाब में पाया जा सकता:

How to create a form for the rails-settings plugin

संबंधित मुद्दे

 संबंधित मुद्दे