在View中显示自定义查询结果

时间:2015-09-08 17:12:49

标签: ruby-on-rails ruby

我对Rails相对较新,除了在我的索引页面上显示“所有”项目外,我还想显示一个已过滤的列表。基本上是与另一个模型有关联的记录子集。

我的模型是问题和拆分。拆分属于一个问题,一个问题已经存在并属于许多拆分。

如果Split与issue_id = 1相关联,那么我希望它显示在该问题的拆分列表中

这是我的控制器代码:

class SplitsController < ApplicationController
  before_action :set_split, only: [:show, :edit, :update, :destroy]

  # GET /splits
  # GET /splits.json
  def index
    @splits = Split.all
    @chosen_splits = Issue.find(1)
  end

以下是我在索引视图中的代码:

<tbody>
  <% @chosen_splits.each do |split| %>

    <tr>
      <td><input type="checkbox" value></td>
      <td><%= link_to split.name, split_path(split) %></td>
      <td class="text-right"><%= number_with_delimiter(split.quantity) %></td>
      <td><%= link_to 'Edit', edit_split_path(split), :class => 'btn btn-xs btn-default' %></td>
      <td><%= link_to 'Delete', split, method: :delete, data: { confirm: 'Are you sure?'}, :class => 'btn btn-xs btn-danger' %></td>
    </tr>
  <% end %>
</tbody>

这是我的问题模型:

class Issue < ActiveRecord::Base

    belongs_to :publication
    has_and_belongs_to_many :splits
    has_many :issue_split_geographies
    belongs_to :medium

    validates :name, :start_date, :status, presence: true

end

当我加载页面时,我得到一个“未定义的方法`每个'”错误。但是,当我运行@splits变量时,同样的基本逻辑正在发挥作用。

非常感谢所有帮助。

1 个答案:

答案 0 :(得分:2)

你需要

@chosen_splits = Issue.find(1).splits

否则,您将针对您的问题调用.each方法

否则,请在has_and_belongs_to_many :splits模型中仅has_many :splits修改Issue