मुझे थोड़ा डेमो सेटअप मिला है जिसमें एक चेकबॉक्स पर क्लिक करके AJAX के माध्यम से एक विशेषता को टॉगल करता है। यह ठीक काम कर रहा है, लेकिन रेल वास्तव में कुछ प्रस्तुत करना चाहता है, इसलिए मैंने मूल रूप से मेरे विचारों में एक खाली toggle.js.erb फ़ाइल बनाने का सहारा लिया है। सवाल मेंरेल चेकबॉक्स AJAX कॉल, कुछ भी प्रस्तुत नहीं करना चाहते हैं
नियंत्रक कार्रवाई:
def toggle
@task = Task.find(params[:id])
respond_to do |format|
format.js do
if (@task.status != true)
@task.status = true
else
@task.status = false
end
@task.save
render :layout => false
end
end
end
सवाल में देखें:
<h1>Tasks</h1>
<ul style="list-style-type: none;">
<% @tasks.each do |task| %>
<li id="<%= dom_id(task) %>">
<%= check_box_tag(dom_id(task), value = nil, checked = task.status) %>
<%= task.action %> <%= link_to 'Edit', edit_task_path(task) %>
<%= link_to 'Delete', task, :confirm => 'Are you sure?', :method => :delete, :remote => true %>
</li>
<% end %>
</ul>
<%= link_to 'New Task', new_task_path %>
<script>
$$('input').each(function(el) {
el.observe('click', function(event) {
// Get the task ID
var elId = el.id.split("_")[1];
// Build the toggle action path
var togglePath = '/tasks/' + elId + '/toggle/';
// Create request, disable checkbox, send request,
// enable checkbox on completion
new Ajax.Request(togglePath, {
onCreate: function() {
el.disable();
},
onSuccess: function(response) {
},
onComplete: function() {
el.enable();
}
});
});
});
</script>
खाली toggle.js.erb फ़ाइल मैं विचारों में, रेल अभी भी मिल गया है के बिना मुझे यह कहते हुए एक त्रुटि देता है कि यह कुछ प्रस्तुत करने की कोशिश कर रहा है।
आखिरकार, मैं दोनों को एक खाली toggle.js.erb फ़ाइल नहीं रखना चाहूंगा, और मैं उस प्रोटोटाइप सामग्री को अपनी स्थिर जावास्क्रिप्ट सामग्री और दृश्य के बाहर प्राप्त करना चाहता हूं।
मैं रेल के लिए काफी नया हूं, इसलिए ऐसा करने का शायद एक आसान तरीका है, लेकिन मैं यहां फंस गया हूं।
धन्यवाद! यह बिल्कुल काम किया। आपकी टॉगल विधि मेरी तुलना में काफी बेहतर है। पिछले धागे पर किसी ने चिंता जताई थी कि चेकबॉक्स को स्पैम करने वाला कोई व्यक्ति टॉगल की सटीकता को फेंक सकता है, लेकिन मैंने इसे अभी बनाया है ताकि एक क्लिक के बाद चेकबॉक्स अक्षम हो जाए जब तक कि AJAX ईवेंट सफल न हो जाए। – clem
बिल्कुल सही :) यदि आपको स्थिति कोड सेट करने और तुरंत अपने नियंत्रक विधि से वापस लौटने की आवश्यकता है: 'प्रस्तुत करें: कुछ भी नहीं>> सत्य,: स्थिति => 404 और वापसी' आशा है कि इससे मदद मिलती है! – lboix