在我的landing_pages"显示"页面,我试图显示通过该页面传入的潜在客户,并通过他们的"得分"对其进行排序。
我的landing_page模型有:
has_many :page_leads
我的page_lead模型有:
belongs_to :landing_page
在我的page_leads控制器中的索引方法中,我有这个,它有效:
def index
@page_leads = PageLead.order(score: :desc)
end
我尝试在show_pages控制器中为show方法复制它。这就是我所拥有的:
def show
@landingpage = LandingPage.find(params[:id]).order(score: :desc)
end
当我尝试去" Show"页面,我收到一个错误"未定义的方法`order' for" 1":String"。我怎样才能让它发挥作用?
我的展示页面包含以下代码:
<tbody>
<% @landingpage.page_leads.each do |page_lead| %>
<tr>
<td><%= page_lead.fname %></td>
<td><%= page_lead.lname %></td>
<td><%= page_lead.score %></td>
</tr>
<% end %>
</tbody>
答案 0 :(得分:0)
只是:
def show
@landingpage = LandingPage.find(params[:id])
end
原因find
返回带有id == params[:id]
的LandingPage。无需对单个项目进行排序。
答案 1 :(得分:0)
如果params [:id]是一个数组,则返回一个数组或记录。该顺序不能应用于数组,因为顺序不是数组类的一部分。
如果params [:id]是单个元素,则find返回记录。再次订单不适用,因为它只是一个记录而不是记录的容器..
如果您想要排序列表,请使用 LandingPage.where(id:params [:id])。order
但是因为这是在节目中我怀疑你想要单品......正如spickermann说的那样放弃订单
LandingPage.find(params[:id])
答案 2 :(得分:0)
如果您想对Page Leads进行排序,您可以执行类似
的操作def show
@landingpage = LandingPage.find(params[:id])
@page_leads = @landingpage.page_leads.order(score: :desc)
end
正如@spickermann所提到的,.find()
只返回一个模型实例。您无法使用ActiveRecord查询方法对此进行排序。
如果您想订购页面潜在客户,则必须在属于目标网页的page_leads集合上致电.order