根据下面的例子,最佳实践是什么?
案例1
controller.rb ...
def index
...
@group = params[:group]
@team = params[:team]
@org = params[:org]
...
endindex.html.haml
= link_to @group, '#'
= link_to @team, '#'
= link_to @org, '#'案例2
controller.rb ...
def index
...
...
endindex.html.haml
= link_to params[:group], '#'
= link_to params[:team], '#'
= link_to params[:org], '#'或者还有另一种选择,比如只传递一个哈希类型的实例变量.
谢谢!
发布于 2013-04-04 23:59:13
通常,最好将参数拆分为实例变量,特别是当您需要对它们进行一些清理时。直接在视图中使用params有点麻烦,其效果是不必要地将视图绑定到传入参数的结构上。
控制器的工作是介于传入参数和视图本身之间。它应该从一种格式转换为另一种格式,以便您可以在不影响视图的情况下对参数进行更改,并在不更改参数要求的情况下将其转换到视图。
在不对参数进行某种处理的情况下,传递参数是不寻常的。大多数情况下,传入的参数用于从数据库中获取记录,或者用于某种容量的路由。
看到三个参数正在传入,然后在页面上逐字逐句地使用,这不是一个常见的用例。为什么要传递这些内容,而不是传递对其中一件可以用来确定其他事情的引用?
例如:
@team = Team.find_by_slug(params[:team_id])
@org = @team.org
@group = @team.group这是大多数Rails应用程序的构造方式。
发布于 2013-08-29 05:36:42
如果您必须在这两个绝对#1之间进行选择,视图不应该使用params散列,因为它是一个混合的关注点。控制器的角色是处理params散列并为视图准备所有内容。
我认为更好的做法是根本不使用实例变量,而只是在控制器中使用助手方法:
def group
params[:group]
end
helper_method :group并认为:
= link_to group, '#'通过这种方式,该方法是惰性的,只有在使用时才进行评估。
也要看一下
https://stackoverflow.com/questions/15823695
复制相似问题