我是RoR初學者,我的「應用程序」有問題。當內容來自其他表時,Rails僅通過ID進行排序?
我有一個名爲「annonces」的表和一個名爲「marques」的表。 (這就像「郵報」和「類別」,一個博客應用)
我下面railscasts的截屏#228,但是當我要排序 了「馬凱」一欄,它排序ID和不按名稱...
所以問題是,我該如何做一個可排序的表列,與多個 表?
它更多的是「點擊標題按屬性排序」。
例如,如果你點擊列(馬凱)這個名字這應該 按字母排序ASC和DESC:AUDI - 寶馬 - 大衆/再點擊: 大衆 - 寶馬 - 奧迪。但是現在,Rails像這樣排序(ID):1 - 2 - 3 // 3 - 2 - 1。這表現出這一點:大衆 - 奧迪 - 寶馬/寶馬 - 奧迪/大衆。
就像我說的,我下面這個截屏: http://railscasts.com/episodes/228-sortable-table-columns
您可以在此頁面上看到的結果的thumbail。
但在我而言,它與多個表(馬凱,MODELE,科特布斯...)
的截屏完美工作時一切都在同一個表。
但我想用其他表的內容來做。
在我annonce_controller:
helper_method :sort_column, :sort_direction
def index
@annonces = Annonce.order(sort_column + " " + sort_direction)
@modeles = Modele.all
@marques = Marque.order(sort_column + " " + sort_direction)
@energies = Energy.all
end
...
...
private
def sort_column
Annonce.column_names.include?(params[:sort]) ? params[:sort] :
"marque_id"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] :
"asc"
end
end
對於 「高清指數」 我想:
@annonces = Annonce.order(sort_column + " " + sort_direction)
@marques = Marque.all
和
@annonces = Annonce.find(params[:id])
@marques = Marque.order(sort_column + " " + sort_direction)
在我marque_controller:
class MarquesController < ApplicationController
helper_method :sort_column, :sort_direction
def index
@marques = Marque.order(sort_column + " " + sort_direction)
end
...
...
private
def sort_column
Marque.column_names.include?(params[:sort]) ? params[:sort] :
"marque"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] :
"asc"
end
end
的annonce.rb模型:
class Annonce < ActiveRecord::Base
attr_accessible :marque_id, :modele_id, :price, :type, :energy_id,
:power
belongs_to :marque
belongs_to :modele
belongs_to :energy
end
的marque.rb模型:
class Marque < ActiveRecord::Base
attr_accessible :marque
has_many :modeles
has_many :annonces
end
的視圖:annonce:index.html.erb
<table>
<tr>
<th><%= sortable "marque_id" %></th>
<th><%= sortable "modele_id" %></th>
<th><%= sortable "price" %></th>
<th><%= sortable "power" %></th>
<th><%= link_to "Energy", :sort => "energy_id" %></th>
<% for annonce in @annonces %>
<tr>
<td><%= annonce.marque.marque %></td>
<td><%= annonce.modele.try(:modele) %></td>
<td align="right"><%= annonce.price %> €</td>
<td align="right"><%= annonce.power %></td>
<td><%= annonce.energy.try(:energy) %></td>
</tr>
<% end %>
</table>
的商品型號的視圖看起來像這樣。
我的表看起來像這樣:
Annonces:
create_table :annonces do |t|
t.integer :marque_id
t.integer :modele_id
t.string :price
t.string :power
t.string :energy
馬凱:
create_table :marques do |t|
t.string :marque
t.timestamps
我希望這將有助於...
我創造這一切通過做:rails g scaffold marque marque:string 或者:rails g scaffold annonce ma rque_id:整數[...]
謝謝!
++++
我正在嘗試Active Admin,但我的類別顯示如下:# insead of Volkswagen例如。怎麼了 ? –
Dl33ter
2012-02-17 14:36:28
你有一個模型具有marque屬性的Marque?它顯示Marque對象,您可能想要顯示Marque屬性/字段。 – 2012-02-17 15:40:28
在我的模特Marque中,我有:attr_accessible:marque - 並顯示,它是一個字段:<%= f.label:marque_id%>和<%= f.collection_select:marque_id,Marque.all,:id,:marque %> //是否有錯? – Dl33ter 2012-02-17 21:16:19