如何在Rails中为部分参数提供默认值?

时间:2019-01-15 17:04:41

标签: ruby-on-rails ruby templating

我需要渲染一个共享的部分,该部分可以从多个视图接收一些参数,但是我不想每次都传递所有参数。如果我在不使用所有参数的情况下调用模板,则会收到错误消息。

是否只有在调用render 'name_of_partial时未定义参数默认值的方法?

2 个答案:

答案 0 :(得分:3)

在阅读了文档并进行了一些摸索之后,我能够为未传递到模板的参数定义默认值。

# 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及更高版本的测试。

答案 1 :(得分:2)

这应该可以解决问题:

<% my_param ||= 'default value' %>

包含或不包含my_param的部分都可以呈现。