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