我已经开始使用react-rails gem,并且很难理解为什么我无法在react.js中呈现自定义模型属性。
所有数据库持久化属性都可以正常工作,它只是不返回任何内容的自定义getter。
为简单起见,这是我的User
模型,email, first_name and last_name
为持久属性。
class User < ActiveRecord::Base
def full_name_and_email
"#{first_name} #{last_name} (#{email})"
end
end
在渲染我的视图时,我初始化了一个反应组件:
<%= react_component 'Header', { data: current_user } %>
在Header
组件中,如果我在render函数中尝试以下内容:
var user = this.props.data;
...
return(
<p>Welcome {user.email}</p>
)
我呈现的HTML是:
<p data-reactid=".0.0.2">
<span data-reactid=".0.0.2.0">Welcome </span>
<span data-reactid=".0.0.2.1">super_admin@email.com</span>
</p>
但是,如果我尝试
render(
<p>Welcome {user.full_name_and_email}</p>
)
我呈现的HTML结果为
<p data-reactid=".0.0.2">
<span data-reactid=".0.0.2.0">Welcome </span>
</p>
我可能在这里遗漏了一些非常基本的东西,所以如果有人能帮我理解发生了什么事就会很棒!
谢谢!
答案 0 :(得分:0)
重新阅读gem的文档后回答我自己的问题:
props可以是响应#to_json的对象,也可以是 已经字符串化的JSON对象(例如,使用Jbuilder制作,请参阅注释 下文)。
并将方法添加到to_json
current_user.to_json(methods: :full_name_and_email)