我有一个名为“博客”的模型,它有几列,包括一个名为“令牌”的列。
我想根据网址中的令牌检索一行 - 例如,如果用户转到/blog/post1
,我想要检索token = post1
在我的应用设置中,我正在做:
get '/blog/:id' do
@postID = params[:id]
@thePost = Blog.where(token: @postID)
render 'blog/index'
end
当我尝试访问.erb文件中的<%= @thePost %>
时,我得到:
#<Sequel::Mysql2::Dataset:0x007fdec1777318>
如何从这里的行访问实际数据?
答案 0 :(得分:2)
您正在返回一个关系,您想要返回的是一个实际记录。为此,请在first
来电结束时使用where
。
Blog.where(token: @postID).first
答案 1 :(得分:1)
Blog.where(token: @postID)
返回包含所有匹配项的列表 - 即使列表只包含一个元素。 OP正在使用Sequel
ORM而不是ActiveRecord
(提示是返回类型Sequel::Mysql2::Dataset
),因此我建议使用first
(或first!
取决于你的用例)而不是where
:
@thePost = Blog.first(token: @postID)
来自文档:
首先在模型的数据集上调用的别名,但优化了对单个参数的处理。