Ruby on rails Rails:如何正确地为视图准备变量?

Ruby on rails Rails:如何正确地为视图准备变量?,ruby-on-rails,view,controller,Ruby On Rails,View,Controller,是否有在Rails中为视图准备变量的最佳实践? 基本上,我想知道,以像@campaign这样的散列为例,我是否应该 在视图或控制器中提取所需的值(例如列表\u id) @campaign = { "id"=>"8a9asd64b94", "type"=>"regular", "create_time"=>"2013-04-17T12:07:58+00:00", "rec

是否有在Rails中为视图准备变量的最佳实践? 基本上,我想知道,以像
@campaign
这样的散列为例,我是否应该 在视图或控制器中提取所需的值(例如
列表\u id

@campaign = {
             "id"=>"8a9asd64b94", 
             "type"=>"regular", 
             "create_time"=>"2013-04-17T12:07:58+00:00", 
             "recipients"=> {
                             "list_id"=>"aecadsasd0b5", 
                             "segment_text"=>"ljsadlkjasd"
                            }
             }

通常,您会将整个对象发送到视图并访问其中的各个属性。比如说

# in controller

@post = Post.find(params[:id])

# in view

<h1><%= @post.title %></h1>
<p><%= @post.body %></p>
控制器中的
#
@post=post.find(参数[:id])
#鉴于


在您的示例中,您应该将整个
@campaign
对象发送到视图中,并访问其中的各个组件。

您通常会将整个对象发送到视图中,并访问其中的各个属性。比如说

# in controller

@post = Post.find(params[:id])

# in view

<h1><%= @post.title %></h1>
<p><%= @post.body %></p>
控制器中的
#
@post=post.find(参数[:id])
#鉴于


在您的示例中,您应该将整个
@campaign
对象发送到视图并访问其中的各个组件。

理想情况下,您应该在控制器中执行查询并将其传递到视图。因此,在您的情况下,
@campaign
应该在控制器中,您可以在视图中使用
@campaign[“recipients”][“list_id”]

理想情况下,您应该在控制器中执行查询并将其传递给视图。因此,在您的情况下,
@campaign
应该在控制器中,您可以在视图中使用
@campaign[“recipients”][“list_id”]

您能解释一下原因吗?对于大型对象来说,不需要传递整个对象,并且违反关注点分离原则,在视图中进行复杂的查询,这不是特别重要吗?获取数据和初始化对象以保存数据发生在控制器中。视图只读取对象上的属性-视图中不会发生或应该发生复杂的查询。您能解释一下原因吗?对于大型对象来说,不需要传递整个对象,并且违反关注点分离原则,在视图中进行复杂的查询,这不是特别重要吗?获取数据和初始化对象以保存数据发生在控制器中。视图只读取对象上的属性-视图中不会发生或应该发生复杂的查询。