如何使多个部分使用相同的模型

时间:2012-07-29 21:00:07

标签: ruby-on-rails ruby

我正在尝试制作一个页面,根据用户在注册时选择的运动将用户划分为不同的类别。我目前正试图用两个不同的部分来做。我遇到的问题是我不能让两个单独的部分使用相同的模型。我该怎么做?

3 个答案:

答案 0 :(得分:1)

嗯。部分只是一种将html.erb代码拆分为多个较小文件并可能在各种视图之间重用的方法。

如果你想在一个视图中进行分离,并且不熟悉rails,我会在没有偏见的情况下尝试它,直到它工作(可能只有两个类别)。

然后,您可以将重复的代码分解为部分并重复使用它们,当然您可以在那里使用所有模型。也许您只是不知道将参数传递给partials的可能性?比如,如果@feed_item是由控制器(或任何其他变量)设置的变量

<%= render 'shared/feed_item_raw', feed_item: @feed_item %>

然后在部分中简单地用feed_item

引用它

答案 1 :(得分:0)

使用它:

render :partial => 'partial_path', :locals => {:user => your_user_object}

答案 2 :(得分:0)

我有一个模型,客户端,它们具有不同的状态。我需要在同一页的不同部分呈现它们

    <%= render(partial: "active_clients", collection:@active_clients) || "No active clients yet." %>
    <%= render(partial: "inactive_clients", collection:@unactive_clients) || "No inactive clients yet." %>

那些去各自的观点部分。

然后在我的视图/ clients文件夹中,我创建了两个不同的部分,因为每个部分略有不同。

 _active_clients.html.erb
 _inactive_clients.html.erb

其中一个部分内容如下:

    <li>
        <input class="checkbox" checked="checked" type="checkbox"/>
        <%= link_to "#{active_clients.firstname} #{active_clients.lastname}", dashboard_path %>
    </li>

其他部分在复选框中没有“已选中”。这是唯一的区别。

在我的clients_controller索引操作中,我已经分离了两个这样的数组:

 def index
     @active_clients = current_trainer.active_clients
     @inactive_clients = current_trainer.inactive_clients
 end  

最后一块是在训练师模型中......

 def active_clients
     self.clients.where(status: true)
 end

 def inactive_clients
    self.clients.where(status: false)
 end    

这对我来说就像一个魅力。我希望有帮助...