2016-03-04 106 views
-1

我正在學習用軌從here反應錯誤。在下面的教程我canme到這個錯誤 ExecJS::RuntimeError in Records#index SyntaxError: [stdin]:41:13: cannot have an implicit value in an implicit object爲什麼標籤空間導致咖啡腳本

然後從谷歌的一點點研究,我來了解錯誤是因爲標籤空間。

檢查該反應的js代碼:

@RecordForm = React.createClass 
 
    getInitialState: -> 
 
    title: '' 
 
    date: '' 
 
    amount: '' 
 
    render: -> 
 
    React.Dom.form 
 
     className: 'form-inline' 
 
     React.DOM.div 
 
     className: 'form-group' 
 
     React.DOM.input 
 
      type: 'text' 
 
      className: 'form-control' 
 
      placeholder: 'Date' 
 
      name: 'date' 
 
      value: @state.date 
 
      onChange: @handleChange 
 

 
     React.DOM.div 
 
      className: 'form-group' 
 
      React.DOM.input 
 
      type: 'text' 
 
      className: 'form-control' 
 
      placeholder: 'Title' 
 
      name: 'title' 
 
      value: @state.title 
 
      onChange: @handleChange 
 
     React.DOM.div 
 
      className: 'form-group' 
 
      React.DOM.input 
 
      type: 'number' 
 
      className: 'form-control' 
 
      placeholder: 'Amount' 
 
      name: 'amount' 
 
      value: @state.amount 
 
      onChange: @handleChange 
 
     React.DOM.button 
 
      type: 'submit' 
 
      className: 'btn btn-primary' 
 
      disabled: [email protected]id() 
 
      'Create record' 
 

 
    handleChange: (e) -> 
 
    name = e.target.name 
 
    @setState "#{ name }": e.target.value 
 

 
     valid: -> 
 
     @state.title && @state.date && @state.amount 
 

 
    handleSubmit: (e) -> 
 
    e.preventDefault() 
 
    $.post '', { record: @state }, (data) => 
 
     @props.handleNewRecord data 
 
     @setState @getInitialState() 
 
    , 'JSON' 
 

 
    render: -> 
 
    React.DOM.form 
 
     className: 'form-inline' 
 
     onSubmit: @handleSubmit

刪除空格'Create record'之前,從上面的腳本會解決這個問題。您可以通過此utility(link)

+0

縮進定義了CoffeeScript中的結構,因此您必須非常小心且與之一致。 –

回答

1

檢查,你應該在2種方式申報的對象和你的編譯器不能決定使用哪種人。

,以避免這樣的錯誤你是選擇的每個聲明中的方法的最佳途徑之一。

# First way 
obj = 
    a : 1 
    b : 2 

# First way (compact) 
obj = a : 1, b : 2 

# Second way 
# vars and props with same names (compact) 
a = 1; b = 2 
obj = { 
    a 
    b 
} 

# Second way (compact) 
a = 1; b = 2 
obj = {a, b} 

您還可以使用React JSX support for Coffeescript

更新:

讓我們看看更接近你的代碼。

您可以發送兩個參數那樣。

React.DOM.button 
    type  : 'submit' 
    className : 'btn btn-primary' 
    disabled : [email protected]() 
    , 'Create record' 

或者像那樣。 輸入對象和非對象的組合編譯成兩個參數。

type  : 'submit' 
    className : 'btn btn-primary' 
    disabled : [email protected]() 
    'Create record' 

And what you do in your code編譯器嘗試發送Object {'Create record' : 'Create record'}作爲參數調用到的[email protected]()結果。

React.DOM.button 
    type: 'submit' 
    className: 'btn btn-primary' 
    disabled: [email protected]() 
    'Create record' 
+0

我仍然沒有得到爲什麼這不工作 '''' React.DOM.button 類型: '提交' 的className: 'BTN BTN-主' 禁用:@Valid() 「創建記錄 '前 '''' 但去掉空格'''' 創建record''''工作正常。 – Kumar

+0

檢查我的第一篇文章。 Markdown的''''在註釋中不起作用 – Kumar

+0

根據您的代碼添加示例 – Nikita