2017-04-20 31 views
0

我使用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程序的文件,但我想只是为了显示组件的想法筑巢。我想避免方法中的命令式字符串连接。有没有一些好方法可以做到这一点?

+0

你看过吗? https://github.com/reactjs/react-rails – Swards

+0

我想我被误解了。我不想使用React。我只想用Rails做同样的事情,我可以轻松地用React做,但没有它。 –

回答

0

好吧,我找到了办法。我们可以用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包括它。

但毕竟工程。

0

你给自己的解决方案了,但让我更清洁apporach添加到您可能是什么之后。

如果你遵循 - 方法设置@my_body Rails的模式,将MyBodyController#show和你MyBodyhas_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