javascript - Rails 和 React : TypeError: Cannot call method 'map' of undefined

标签 javascript ruby-on-rails ruby reactjs

我在我的 Rails 项目上使用 React 制作 Post 系统。 但是,当我尝试在我的主页中呈现帖子时,出现此错误:

React::ServerRendering::PrerenderError in HomeController#index Encountered error "TypeError: Cannot call method 'map' of undefined" when prerendering PostsList with {"posts":null} React.createClass.render ((execjs):19669:38)

我的代码是上面的:

posts_list.js.jsx:
var PostsList = React.createClass({
    getInitialState: function() {
        return { posts: this.props.initialPosts };
    },

    render: function() {
        var posts = this.state.posts.map(function(post) {
            return  <Post key={post.id} post={post} />;
        });

        return (
            <div className="posts">
                {posts}
            </div>
        );
    }
});

post.js.jsx

var Post = React.createClass({
    render: function() {
        return (
            <div className="post">
                <PostTitle post={this.props.post} />
                <PostBody post={this.props.post} />
            </div>
        );
    }
});

var PostTitle = React.createClass({
    render: function() {
        return (
            <div className="post-header">
                <h2>{this.props.post.title}</h2>
                <div className="post-meta">
                    By {this.props.post.user_id} - {this.props.post.created_at}
                </div>
            </div>
        );
    }
});

var PostBody = React.createClass({
    render: function() {
        return (
            <div className="post-contents">
                {this.props.post.body}
            </div>
        );
    }
});

和index.html.erb

<div class="container-fluid">
    <div class="col-md-8">
        <h3> Posts Feed </h3>
        <%= react_component('PostsList', {initialPosts: @posts }, {prerender: true}) %>
    </div>
</div>

post_controller.rb

def index
        @posts = Post.all
        @user = current_user
end

当我使用 {initialPosts: Post.All } 它有效,但是当我使用 @posts 时,它无效

知道为什么会这样吗?我已经在网站上发帖并且@posts 不为空。

最佳答案

好的,我发现出了什么问题,我在主页布局中渲染 react ,但@posts 是在帖子 Controller 而不是主页 Controller 中定义的。

关于javascript - Rails 和 React : TypeError: Cannot call method 'map' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33230308/

相关文章:

javascript - 无法同时移动两个 Canvas 矩形

javascript - AngularJS,为什么只能在 firefox 中正确运行?

ruby-on-rails - 带有 ransacker 的事件管理员自定义过滤器

jquery - 我在使用 event.preventDefault(); 时遇到问题获取我的 DOM 上的 ahref

ruby-on-rails - 无法启动 Rails 服务器 - sqlite3 适配器错误

javascript - jsPDF 服务器端 (node.js) 使用 node-jspdf

javascript - 具有一个值的 setState 如何工作?

ruby-on-rails - FactoryGirl搞砸了 rake db:迁移过程

ruby - 使用 jbuilder 创建具有动态哈希键的 JSON

html - 滚动时固定标题和侧边栏位置