我正在使用react-rails gem并且有两个模型:Message
和User
。用户 has_many :消息。
在我的message.js.jsx
,我想向该消息的用户显示。在常规 erb 中,它只是 <%= message.user.name %>
。我将如何在 message.js.jsx
中执行此操作组件?
最佳答案
您可以将组件重命名为message.js.jsx.erb
并在其中使用ERB,但它只会在Rails启动时编译一次。
一种更类似于 React 的处理方式是通过 AJAX 加载 componentDidMount
中的用户数据(如果使用 Flux,则为 Store)。
message.js.jsx
getInitialState: function() {
return { user: { name: '' } };
},
componentDidMount: function() {
$.getJSON('/users/'+ this.props.id +'.json', function(userData) {
if (this.isMounted()) {
this.setState({ user: userData })
}
});
},
您可以创建一个 Rails 端点以将 userData 作为 JSON 返回,如下所示:
users_controller.rb
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # default html response
format.json { render json: @user.to_json(only: [:id, :name]) }
end
end
参见Facebook's page on this了解更多详情
关于ruby-on-rails - 使用 React Rails 显示关联的模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519057/