0

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

4

3 回答 3

1

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

如果您希望在一个视图中进行分离,并且对 rails 不熟悉,我会尝试不使用部分内容,直到它起作用(可能仅适用于两个类别)。

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

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

然后在部分中简单地引用它feed_item

于 2012-07-29T21:05:41.230 回答
0

用这个:

render :partial => 'partial_path', :locals => {:user => your_user_object}
于 2012-07-30T02:42:35.307 回答
0

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

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

那些去他们各自的视图部分。

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

 _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    

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

于 2014-03-15T17:12:47.230 回答