我怎样才能 call/use 我的范围在我看来
How can I call/use my scope in my view
我正在尝试使用 has_scope 过滤所有未通过我的 KeyRoomMapping Table 连接到房间的钥匙。
我已经在我的 Keys 模型中创建了作用域,但我不知道如何在我的视图中调用该作用域。
型号
class Key < ApplicationRecord
has_many :key_room_mappings, foreign_key: :key_id, dependent: :destroy
has_many :rooms, through: :key_room_mappings
###Is this the best way to find all Keys that are not connected to a room?
scope :without_rooms, -> { where.not(id: KeyRoomMapping.distinct.pluck(:key_id)) }
end
class KeyRoomMapping < ApplicationRecord
belongs_to :room
belongs_to :key
end
class Room < ApplicationRecord
has_many :key_room_mappings, foreign_key: :room_id, dependent: :destroy
has_many :keys, through: :key_room_mappings
end
控制器
class KeysController < ApplicationController
has_scope :without_rooms
def index
@keys = apply_scopes(Key).all
end
end
查看
###How can I use my scope to filter my list below, this is not working...
<%= link_to "Keys Without Rooms", {controller: 'keys', action: 'index', without_rooms: ''} %>
<% @keys.each do |key| %>
<tr>
<td><%= key.name %></td>
<td><%= key.copy %></td>
</tr>
<% end %>
将 boolean
选项添加到 has_scope
,您将在构建路径时使用它:
# controller
has_scope :without_rooms, type: :boolean
# view
link_to "Keys Without Rooms", '/keys?without_rooms=true' # or keys_path(without_rooms: true)
我正在尝试使用 has_scope 过滤所有未通过我的 KeyRoomMapping Table 连接到房间的钥匙。
我已经在我的 Keys 模型中创建了作用域,但我不知道如何在我的视图中调用该作用域。
型号
class Key < ApplicationRecord
has_many :key_room_mappings, foreign_key: :key_id, dependent: :destroy
has_many :rooms, through: :key_room_mappings
###Is this the best way to find all Keys that are not connected to a room?
scope :without_rooms, -> { where.not(id: KeyRoomMapping.distinct.pluck(:key_id)) }
end
class KeyRoomMapping < ApplicationRecord
belongs_to :room
belongs_to :key
end
class Room < ApplicationRecord
has_many :key_room_mappings, foreign_key: :room_id, dependent: :destroy
has_many :keys, through: :key_room_mappings
end
控制器
class KeysController < ApplicationController
has_scope :without_rooms
def index
@keys = apply_scopes(Key).all
end
end
查看
###How can I use my scope to filter my list below, this is not working...
<%= link_to "Keys Without Rooms", {controller: 'keys', action: 'index', without_rooms: ''} %>
<% @keys.each do |key| %>
<tr>
<td><%= key.name %></td>
<td><%= key.copy %></td>
</tr>
<% end %>
将 boolean
选项添加到 has_scope
,您将在构建路径时使用它:
# controller
has_scope :without_rooms, type: :boolean
# view
link_to "Keys Without Rooms", '/keys?without_rooms=true' # or keys_path(without_rooms: true)