【发布时间】:2019-01-15 17:04:41
【问题描述】:
我需要渲染一个可以从多个视图接收一些参数的共享部分,但我不想每次都传递所有参数。如果我在没有所有参数的情况下调用模板,则会出现错误。
有没有办法为参数定义默认值,只有在调用render 'name_of_partial时没有定义它们?
【问题讨论】:
标签: ruby-on-rails ruby templating
我需要渲染一个可以从多个视图接收一些参数的共享部分,但我不想每次都传递所有参数。如果我在没有所有参数的情况下调用模板,则会出现错误。
有没有办法为参数定义默认值,只有在调用render 'name_of_partial时没有定义它们?
【问题讨论】:
标签: ruby-on-rails ruby templating
这应该可以解决问题:
<% my_param ||= 'default value' %>
可以在提供或不提供my_param 的情况下呈现包含此内容的部分。
【讨论】:
在阅读了文档之后,有些摸不着头脑,我能够为未传递给模板的参数定义默认值。
# in views/shared/template.html.erb
<% my_param = 'default_value' unless binding.local_variable_defined?(:my_param) %>
# Now you can call the partial with or without setting `my_param`
# Now you can call the partial without parameters...
<%= render 'shared/my_template' %>
# ...or with parameters
<%= render 'shared/my_template', my_param: 'non-default value' %>
使用 Ruby 2.3.1 及更高版本进行测试。
【讨论】:
<% my_param ||= 'default value' %> 即可。