jquery से रेल फ़ंक्शन कॉल करें?

क्या यह रेलवे फ़ंक्शन को कॉल करने या jQuery के भीतर से रेल ऑब्जेक्ट तक पहुंचने के लिए संभव है? मैं कुछ ऐसा करना चाहता हूं:

jQuery(document).ready(function($) {
$('#mydiv').html("<%= @object.name %>");
});

या

jQuery(document).ready(function($) {
$('#mydiv').html("<%= render :partial => "contacts" %>");
});

फिलहाल मैं अपने सभी jQuery सामान को अपने application.js में रख रहा हूं, जो मेरे लेआउट में शामिल है। ओह हाँ .... और मैं रेल एज का उपयोग नहीं कर रहा हूँ।

सादर,

सेबस्टियन

0

2 उत्तर

@changelog: आपके जवाब के लिए बहुत कुछ था।

The problem depicted below the line was solved by enclosing the <%= yield :myjs %> in the appropriate JavaScript tags as follows:

<script type="text/javascript">
<%= yield :myjs %>
</script>

एक बार फिर धन्यवाद!!


मैंने इसे जिस तरह से कहा, उसे लागू करने की कोशिश की, लेकिन मुझे कुछ कठिनाइयों का सामना करना पड़ रहा है:

मैंने अपने show.html.erb के शीर्ष पर निम्न सामग्री_ ब्लॉक डाला है:

<% content_for :myjs do %>
jQuery(document).ready(function($) { alert('hello'); });
<% end %>

मेरे layout.html में मैं सभी जावास्क्रिप्ट को निम्नानुसार शामिल करता हूं (यहां application.js कुछ सामान्य jQuery फ़ंक्शंस लागू करता है):

<head>
...
<%= javascript_include_tag 'jquery', 'application' %>
<%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? %>
<% yield :myjs %>
</head>
<body>
...

The problem is that my JavaScript doesn't show up in the page's source when I call it. Also the alert function is not called. When I put in <%= yield :myjs %> instead (with the =) the JavaScript is rendered at the beginning of my body block, instead of the head, but still the alert function isn't called when I open the page.

0
जोड़ा
मुद्दों के लिए खेद है। मैं भविष्य के संदर्भ के लिए अपना जवाब ठीक कर दूंगा। मैं खुशी से मदद कर सकता है।
जोड़ा लेखक changelog, स्रोत

यदि आप ऐसा करना चाहते हैं, तो आपको उस नियंत्रक में एक विधि रखना होगा जो आपको चाहिए। ऐसा करने का एक और तरीका है दृश्य लेआउट का उपयोग करना, जैसे कि आपके लेआउट व्यू के अंत में

<script type="text/javascript">
<%= yield :footerjs %>
</script>

और दृश्य में कुछ ऐसा करें:

<% content_for :footerjs do %>
jQuery(document).ready(function($) {
$('#mydiv').html('<%= escape_javascript(render :partial => "contacts") %>');
});
<% end %>

आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपके द्वारा प्रस्तुत किए जाने वाले आंशिक भाग में ऐसे वर्ण नहीं होंगे जो जावास्क्रिप्ट त्रुटियों का कारण बन सकें (स्ट्रिंग के अंत से पहले कोट्स को समाप्त करना आदि)। इसके अलावा, कुछ ब्राउज़रों को मल्टी-लाइन स्ट्रिंग पसंद नहीं है, इसलिए आपको इसके साथ भी बेवकूफ़ बनाना होगा।

0
जोड़ा