参数化的嵌套ERB组件
问题描述:
我使用Rails很新,但有经验作出反应。我想和ERB文件某物管理,我可以做会那样:参数化的嵌套ERB组件
class MyElement extends Component {
render() {
return <div>
some text
{this.props.myFirstParam + this.props.mySecondParam}
some another text
</div>
}
}
class MyBody extends Component {
render() {
return <body>
<MyElement myFirstParam={1} mySecondParam={2} />
<MyElement myFirstParam={3} mySecondParam={5} />
<MyElement myFirstParam={7} mySecondParam={3} />
</body>
}
}
我当然知道,在服务器端的Rails程序的文件,但我想只是为了显示组件的想法筑巢。我想避免方法中的命令式字符串连接。有没有一些好方法可以做到这一点?
答
好吧,我找到了办法。我们可以用render
函数来做到这一点。我创建了一个名为_my_element.erb
文件,该文件是这样的:
<div>
some text
<%= myFirstParam + mySecondParam %>
some another text
</div>
它位于views
文件夹中,这似乎是很重要的。
下一页在my_body
文件我插入:
<%= render partial: "my_element.erb",
locals: {myFirstParam: 1, mySecondParam: 2} %>
对于文件的一些原因名称应与_
字符开始,而在partial
参数路径should't包括它。
但毕竟工程。
答
你给自己的解决方案了,但让我更清洁apporach添加到您可能是什么之后。
如果你遵循 - 方法设置@my_body
Rails的模式,将MyBodyController#show
和你MyBody
有has_many :my_elements
线。现在,您可以键入:
<%= render @my_body.my_elements %>
现在,您可以创建一个“my_elements/_my_element.html.erb'文件(是的的确与下划线),可以包含HTML渲染注释块(如果你这样做一步错了,Rails会解释你该做什么)。由于它是一组记录,代码将重复所有评论。
作为一个更广泛的注意事项:在Rails通常需要传递的对象(与价值,而且也方法),而不是仅仅在有限的需要渲染元素单独的值。
另请参阅:http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables
你看过吗? https://github.com/reactjs/react-rails – Swards
我想我被误解了。我不想使用React。我只想用Rails做同样的事情,我可以轻松地用React做,但没有它。 –