我有时会在部分erb模板中看到这一点:
<%= yield :someval %>
其他时候根本没有收益。
在部分中调用收益率有什么好处?
答案 0 :(得分:11)
我过去曾经使用它,如果我有一部分可以从不同页面调用,可能需要页面中的某些上下文内容。
我使用的用例是菜单。我有我的库存菜单项,但后来我有yield(:menu)
,所以用户加载了管理页面,我可以从页面添加菜单项,而不是在部分本身写一个条件语句。
这是一些伪代码:
%ul
%li Home
%li Users
%li Roles
= yield(:menu)
- content_for :menu do
%li Add User
%li Change permissions
- content_for :menu do
%li Add Role
相反:
%ul
%li Home
%li Users
%li Roles
- if current_controller == 'users'
%li Add User
%li Change permissions
- if current_controller == 'roles'
%li Add Role
虽然两者都有功能(如果它是真实的代码),我更喜欢第一种方法。第二个可以失控,并且非常快速地变得非常难看。但这是一个偏好的问题。