我需要渲染一个共享的部分,该部分可以从多个视图接收一些参数,但是我不想每次都传递所有参数。如果我在不使用所有参数的情况下调用模板,则会收到错误消息。
是否只有在调用render 'name_of_partial
时未定义参数默认值的方法?
答案 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
的部分都可以呈现。