Rails和React:TypeError:无法调用方法' map'未定义的

时间:2015-10-20 07:17:19

标签: javascript ruby-on-rails ruby reactjs

我在我的Rails项目上使用React制作Post系统。 但是当我尝试在我的主页中渲染帖子时,我收到了这个错误:

  

HomeController #index中的React :: ServerRendering :: PrerenderError   遇到错误" TypeError:无法调用方法' map'未定义"使用{" posts":null}预渲染PostsList时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时,它不是

为什么会发生这种想法?我已经在网站上发帖,@ post不是空的。

1 个答案:

答案 0 :(得分:0)

好的,我发现了什么问题,我在家庭布局中渲染了反应,但@posts是在帖子控制器而不是家庭控制器中定义的。