2013-04-05 8 views
5

मैं विशिष्ट दृश्य के लिए app/assets/javascripts/ticket.js.coffee में jQuery चला रहा हूं। हर बार जब मैं पृष्ठ पर जाता हूं तो ब्राउज़र इस त्रुटि को प्रस्तुत करता है - इस त्रुटि का कोई भी उल्लेख कहीं भी ऑनलाइन नहीं है।सिंटेक्स त्रुटि: अप्रत्याशित POST_IF त्रुटि रेल

(स्थानीय होस्ट: 3000/टिकट/नई):

SyntaxError: unexpected POST_IF 

Extracted source (around line #6): 

3: <head> 
4: <title>Ops2</title> 
5: <%= stylesheet_link_tag "application", :media => "all" %> 
6: <%= javascript_include_tag "application" %> 
7: <%= csrf_meta_tags %> 
8: </head> 
9: <body> 

पेज त्रुटि फेंकने की फ़ाइल -

एप्लिकेशन/विचारों/टिकट/_form.html.erb:

<%= form_for(@ticket) do |f| %> 
<% if @ticket.errors.any? %> 
<div id="error_explanation"> 
<h2><%= pluralize(@ticket.errors.count, "error") %> prohibited this ticket from being saved:</h2> 
<ul> 
<% @ticket.errors.full_messages.each do |msg| %> 
<li><%= msg %></li> 
<% end %> 
</ul> 
</div> 
<% end %> 

<div class="field"> 
<%= f.label :school_id %><br /> 
<%= f.collection_select :school_id, School.order(:name), :id, :name, include_blank: true%> 
</div> 

<div class="field"> 
<%= f.label :location_id %><br /> 
<%= f.grouped_collection_select :location_id, School.order(:name), :locations, :name, :id, :name, include_blank: true%> 
</div> 

<div class="actions"> 
<%= f.submit %> 
</div> 
<% end %> 

एप्लिकेशन/आस्तियों/javascripts/application.js ग ontains:

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

jQuery के साथ Coffeescript फ़ाइल -

एप्लिकेशन/आस्तियों/javascripts/tickets.js.coffee:

$ -> 
$('#ticket_location_id').parent().hide() 
    locations = $('#ticket_location_id').html() 
$('#ticket_school_id').change -> 
    school = $('#ticket_school_id :selected').text() 
    options = $(locations).filter("optgroup[label='#{school}']").html() 
if options 
$('#ticket_location_id').html(options) 
$('#ticket_location_id').parent().show() 
else 
$('#ticket_location_id').empty 
$('#ticket_location_id').parent().hide() 

POST_IF त्रुटि if/else बयान को इंडेंट करके हल किया गया है मेरी कॉफी लिपि में! (विवरण के लिए नीचे उत्तर देखें) कोई त्रुटि नहीं है और पेज लोड!

+0

आप सुनिश्चित करें कि सभी coffeescript कोड आपके पास है क्या? ** // = requ_tree। ** ** ** = के साथ टिकट ** की आवश्यकता है और यदि आपको अभी भी एक ही समस्या है तो मुझे बताएं। आपके पास जो त्रुटि है वह कॉफ़ीस्क्रिप्ट का खराब विश्लेषण है, अगर यह काम नहीं करता है, तो यह देखने के लिए कि क्या यह काम करता है, फ़ाइल टिकट.जेएस.कोफी को हटाने का प्रयास करें, इसलिए कम से कम हम यह महसूस कर सकते हैं कि यह समस्या फ़ाइल टिकट.जेएस के भीतर है .coffee – rorra

+0

मैं // = requ_tree को हटाने का दूसरा स्थान। इसने मुझे अतीत में सभी प्रकार के दर्द का कारण बना दिया है। फ़ोल्डरों में अपनी सभी जावास्क्रिप्ट को अलग करना बेहतर है और फिर उन फ़ोल्डर्स की आवश्यकता है, तो यह // = requ_tree का उपयोग करना है। – rovermicrover

+0

// = require_tree को बदल रहा है।// = टिकट की आवश्यकता मुझे एक ही त्रुटि, कोई बदलाव नहीं देता है। अगर मैं blog.js.coffee फ़ाइल में jQuery को हटा देता हूं तो मेरे पेज सही तरीके से लोड होते हैं। वास्तव में, अगर मैं jQuery में 'if' और 'else' कथन को हटा देता हूं, तो पृष्ठ लोड होता है लेकिन jQuery अभी भी नहीं चलता है। – Devin

उत्तर

5

आप अपने if कथन के लिए इंडेंटेशन अनुपलब्ध हैं। कॉफीस्क्रिप्ट में इंडेंटेशन महत्वपूर्ण है।

यह ...

if options 
$('#ticket_location_id').html(options) 
$('#ticket_location_id').parent().show() 
else 
$('#ticket_location_id').empty 
$('#ticket_location_id').parent().hide() 

... जरूरतों इस होना करने के लिए, प्रमुख खरोज वैकल्पिक नहीं है:

if options 
    $('#ticket_location_id').html(options) 
    $('#ticket_location_id').parent().show() 
else 
    $('#ticket_location_id').empty 
    $('#ticket_location_id').parent().hide() 
+0

वाह, धन्यवाद! मुझे वह कहीं भी नहीं मिला! यह बहुत अच्छा है, POST_IF त्रुटि अब और दिखाई नहीं दे रही है इसलिए मैं एक कदम करीब हूं लेकिन अब यह अभी भी मेरा jQuery नहीं चल रहा है। कोई विचार? – Devin

+0

मुझे यह काम करने के लिए मिला!यह मेरे jQuery में सफेद स्थान और इंडेंटेशन के साथ कुछ भी होना चाहिए जो इसे नहीं चला रहा था। मुझे नहीं पता था कि कॉफ़ीस्क्रिप्ट व्हाईटस्पेस के बारे में इतना पसंद था। धन्यवाद! – Devin

+0

कॉफीस्क्रिप्ट * सभी * व्हाइटस्पेस के बारे में है, कोड की एक पंक्ति से पहले इंडेंटिंग का स्तर बेहद महत्वपूर्ण है। यदि आपके शरीर इंडेंट नहीं हैं तो आपके बयान कुछ भी नहीं करते हैं। कॉफ़ीस्क्रिप्ट को यह जानने की उम्मीद है कि कौन सी लाइनें किस कथन के साथ जाती हैं, जब आपके पास 'एंड' या '}' '''जैसे ब्लॉक के नजदीक से कुछ भी नहीं है? – meagar

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