Rails Controller#Index 中的运行时错误 - 不支持:符号
Rails Runtime Error in Controller#Index - Unsupported: Symbol
我已经在我的应用程序中实现了几个不同的搜索表单,试图实现一个特定的操作(输入对象 ID 并直接转到该实例的显示页面),并且我已经非常接近这个了,直到我运行 进入 Cards#Index 的 Unsupported: Symbol
运行时错误。
这是搜索表单(我刚把它放到 layouts/application.html.erb
:
<%= form_tag(cards_path, :method => "get") do %>
<div class="input-append">
<%= text_field_tag :search, params[:search], class: "span2", placeholder: "Search Cards" %>
<button class="btn" type="submit"><i class="icon-search"></i></button>
</div>
<% end %>
这是我的 cards_controller.rb
索引操作:
def index
if params[:search]
@cards = Card.search(params[:search]).order("created_at DESC")
else
@cards = Card.order("created_at DESC")
end
end
def show
end
private
def set_card
@card = Card.find(params[:id])
end
def card_params
params.require(:card).permit(:title, :description)
end
和模特card.rb
class Card < ActiveRecord::Base
validates :title, presence: true, uniqueness: true
validates :description, presence: true
def self.search(query)
where(:id, query)
end
end
我在模型中使用 where("title like ?", "%#{query}%")
,但我读到以这种方式制作 sql 查询存在安全风险,我也在寻找完全匹配。
那么是什么阻止了视图识别搜索传递的 id 参数?
您的观点没有任何问题 - 问题在于您的搜索方法
where(:id, query)
这不是 where
.
的有效用法
应该是
where(id: query)
或者,稍微老一点:
where("id = ?", query )
我已经在我的应用程序中实现了几个不同的搜索表单,试图实现一个特定的操作(输入对象 ID 并直接转到该实例的显示页面),并且我已经非常接近这个了,直到我运行 进入 Cards#Index 的 Unsupported: Symbol
运行时错误。
这是搜索表单(我刚把它放到 layouts/application.html.erb
:
<%= form_tag(cards_path, :method => "get") do %>
<div class="input-append">
<%= text_field_tag :search, params[:search], class: "span2", placeholder: "Search Cards" %>
<button class="btn" type="submit"><i class="icon-search"></i></button>
</div>
<% end %>
这是我的 cards_controller.rb
索引操作:
def index
if params[:search]
@cards = Card.search(params[:search]).order("created_at DESC")
else
@cards = Card.order("created_at DESC")
end
end
def show
end
private
def set_card
@card = Card.find(params[:id])
end
def card_params
params.require(:card).permit(:title, :description)
end
和模特card.rb
class Card < ActiveRecord::Base
validates :title, presence: true, uniqueness: true
validates :description, presence: true
def self.search(query)
where(:id, query)
end
end
我在模型中使用 where("title like ?", "%#{query}%")
,但我读到以这种方式制作 sql 查询存在安全风险,我也在寻找完全匹配。
那么是什么阻止了视图识别搜索传递的 id 参数?
您的观点没有任何问题 - 问题在于您的搜索方法
where(:id, query)
这不是 where
.
应该是
where(id: query)
或者,稍微老一点:
where("id = ?", query )