Ich bin über die Post-Elemente eines Benutzers durchlaufen. Ich kann die Elemente aufgelistet, aber nicht ihr Profil auf der Grundlage meiner Beziehung:Wie ReactJS behandelt Rails Active Record Associations
Beitrag Modell:
belongs_to :user
Profil Modell:
belongs_to :user
Benutzermodell:
has_many :posts
has_one :profile
Posts:
class PostsController < ApplicationController
respond_to :json
before_action :set_post, only: [:show, :edit, :update, :destroy]
before_action :only_current_user, except:[:show, :interest]
# GET /posts
# GET /posts.json
def index
@user = User.friendly.find(params[:user_id])
end
[...]
end
Index Seite Controller:
class PagesController < ApplicationController
respond_to :json
def index
@users = User.all
@posts = Post.all.order("created_at DESC")
end
[...]
end
Ohne JS, erhalte ich die Werte mit:
<% @posts.each do |s| %>
<%= s.user.profile.business_name %>
<%= s.post_type %>
<%= s.<all others> %>
<% end %>
Jetzt mit Reaktion, kann ich die verwenden reagieren -Reifen Edelstein dafür:
var Posts = React.createClass({
render: function() {
var createItem = (p) => (
<div className="row">
{p.post_type}
{p.foobar}
{p.user.name} //this does not work
</div>
);
return (
<div className="panel">
{this.props.posts.map(createItem)}
</div>
);
}
});
Index.html.erb:
<%= react_component('Posts', { posts: @posts } %>
Ich dachte, ich die Antwort hatte aber spuckt gerade aus allen Benutzern, wenn ich nur den Benutzer mit zugehörigem Beitrag mag:
<%= react_component('Posts', { posts: @posts,
users: @users } %>
Dann würde ich die Requisiten in der js hinzufügen, aber das ist nicht was ich will.
Es scheint ein Hinweis in meiner Konsole zu sein, den ich versuche, herauszufinden:
„Warnung: Jedes Kind in einem Array oder Iterator sollte eine eindeutige haben.‚Schlüssel‘prop Überprüfen der Methode machen . der Beiträge
Wie bevölkern Sie die Variable '@ posts' in Ihrem Controller? – nbermudezs
@nbermudezs hat gerade den Beitrag aktualisiert. – Sylar
Ich denke, Sie haben die falsche Aktion eingefügt, das ist die Zuweisung von '@ user'. Machst du '@posts = @ user.posts'? – nbermudezs