使用Rails反应JS - 使用URL访问JSON数据

时间:2015-08-11 12:44:42

标签: javascript ruby-on-rails json reactjs

我正在学习如何在我的Rails应用程序中使用React JS。 免责声明:这是我第一次搞乱JS!

我跟随Michael Chan at Rails Conf的演讲。一切都运行得很漂亮,直到我点击了CommentsContainer部分,在那里他从Rails路线中获取评论数据。我正在尝试同样的事情,除了在一个简单的歌曲控制器(用脚手架生成,名称和艺术家作为属性)。

我陷入了他用路径获取此数据的部分,当我尝试运行代码时,我最终得到了一个500错误页面。我不知道如何调试我的React代码,因为浏览器控制台只显示500错误。

这是我的观点,

<%= react_component "SongsContainer", { songsPath: songs_path } %>

这是我的React代码,

var SongsContainer = React.createClass({
componentWillMount(){
    this.fetchSongs();
    setInterval(this.fetchSongs, 1000);
},

fetchSongs() {
    $.getJSON(
        this.props.songsPath,
        (data) => this.setState({songs: data});
    );
},

getInitialState() {
    return { songs: [] };
},

render() {
    return <Songs songs={this.state.songs} />;
}
});

非常感谢任何帮助!我只是看着这500页不知道该做什么。

编辑:添加服务器日志

Started GET "/" for ::1 at 2015-08-11 18:19:30 +0530
Processing by SongsController#index as HTML
  Rendered songs/index.html.erb within layouts/application (0.6ms)
Completed 500 Internal Server Error in 373ms (ActiveRecord: 0.0ms)

ActionView::Template::Error (SyntaxError: unknown: Unexpected token (10:41)):
    3: <head>
    4:   <title>Albums</title>
    5:   <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
    6:   <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
    7:   <%= csrf_meta_tags %>
    8: </head>
    9: <body>
  app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___3071413699732960348_70238909518380'

1 个答案:

答案 0 :(得分:0)

经过多次努力,我找到了解决方案!

  1. 从application.html中删除Turbolink。
  2. 用这个替换$ .getJSON函数,

    $。AJAX({    url:this.props.songsPath,    dataType:&#39; json&#39;,    成功:函数(数据){      this.setState({songs:data});    } .bind(本)  });

  3. 现在,我真的不太了解JS,所以我不知道为什么会这样,但它确实如此!欢呼声。