Ruby on rails Rails 3/4 Rails脚手架。更新方法会导致Heroku上的索引顺序发生更改

Ruby on rails Rails 3/4 Rails脚手架。更新方法会导致Heroku上的索引顺序发生更改,ruby-on-rails,heroku,Ruby On Rails,Heroku,我构建了一个网络应用程序来测试购买咖啡的能力 我使用rails generate scaffold使我的物品供应商: rails generate scaffold vendor expresso_count:integer cuppucino_count:integer 上面没有包含其他一些变量,但它们都是integer类型 当用户购买咖啡时,供应商中的变量(例如:cuppucino_计数)会被更新。它在使用.update的供应商控制器中使用此自定义方法 def purchase

我构建了一个网络应用程序来测试购买咖啡的能力

我使用rails generate scaffold使我的物品供应商:

rails generate scaffold vendor expresso_count:integer cuppucino_count:integer 
上面没有包含其他一些变量,但它们都是integer类型

当用户购买咖啡时,供应商中的变量(例如:cuppucino_计数)会被更新。它在使用.update的供应商控制器中使用此自定义方法

     def purchase_pass
@vendor = Vendor.find(params[:id])

# checks vendor pass
if @vendor.vendor_pass.to_s == vendor_params[:vendor_pass]
  flash[:success] = "Thank you for your purchase of 1x #{ params[:type] }."
  #updates coffee type
  if params[:type] == 'Espresso'
    coffee_count = @vendor.expresso_count
    coffee_count = coffee_count +1
    @vendor.update(expresso_count: coffee_count)
  end

  redirect_to purchase_thanks_path
else
  flash[:error] = "Pass incorrect. Please ensure you enter the correct pass."
  render :purchase
end
结束

这是由此链接执行的操作

  <p><%= link_to vendor_purchase_path(id: @vendor.id, type: 'Americano') do %> <span style="font-size: 300%;" class="fa fa-coffee"></span>Americano <% end %></p>
它变为

Vendor 2, Vendor 3, Vendor 1 
如果供应商1是更新的供应商

但是,在我的本地安装上,顺序没有改变

你知道这是什么原因吗


这里是我的git repo的链接:

与此问题相关的是
@vendors
变量如何在
index
方法中设置;这将决定索引页中显示的内容

如果您保留了脚手架中的代码,那么它很可能如下所示:

def index
  @vendors = Vendor.all
end
def index
  @vendors = Vendor.order(:id)
end
这将在表上运行
select*fromsvendors
查询

请注意,查询没有任何排序子句。从:

如果指定了ORDERBY子句,则返回的行按顺序排序 指定的顺序。如果未给出ORDER BY,则返回行 无论系统以何种顺序发现生产速度最快。(见订货人) (见下文第条。)

这就解释了为什么本地和heroku上显示的顺序不同

要使结果以特定顺序显示,请指定order子句,如下所示:

def index
  @vendors = Vendor.all
end
def index
  @vendors = Vendor.order(:id)
end

我刚刚投票结束了你的问题,因为它不在主题上。您应该对其进行编辑以保持其打开状态。关于提出好问题的信息,特别是这一部分。这样更好吗?我是新来的。对不起,好多了,是的。另外,花时间学习rails框架的基础知识是个好主意;两者都是极好的资源。嘿,普拉卡什,它成功了!谢谢你的建议。这是我尝试制作的第一个应用程序。我做了一个月的rails教程,但在很多方面都有所欠缺,主要是了解MVC是如何工作的。但我确实打算学到更多。