我正在尝试使用Sinatra中的Sequel从PostgreSQL数据库中检索数据。
DB = Sequel.connect('postgres:// connection_data')
项目= DB [:items]
然后,我尝试获取具有特定ID的条目:
get '/:id' do
@item = items.filter(:id => params[:id])
erb :edit
end
在我的编辑视图中,我想显示@item变量的内容。问题是我不知道如何获取ID。
<% if @item %>
<a href="/<%= @item.id %>/doit">Do something</a>
<% else %>
<p>Item not found.</p>
<% end %>
我尝试使用@ item.id和@item [:id],但两者都不起作用。我得到一个错误undefined method 'id' for #<Sequel::Postgres::Dataset:0x007fac118b7120>
。从@item变量检索值的正确方法是什么?
@item = items.filter(:id => params[:id])
返回数据集。如果您想要一个项目,则应该执行以下操作:@item = items.first(:id => params[:id].to_i)
也@item.id
可能是不想要你想要的。鉴于此items = DB[:items]
,您使用的是普通数据集,然后@item = items.first(:id => params[:id].to_i)
将为您提供哈希值。您需要执行操作@item[:id]
以获取商品的ID。
您可能要考虑使用模型:
# model file
class Item < Sequel::Model; end
# sinatra code
@item = Item[params[:id].to_i]
# template
@item.id
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句