Hi!

I'm a RoR beginner, and I have a problem with my "app".

I have a table called " annonces " and a table called " marques ".
(It's like "post" and "category", for a blog app)

I'm following the screencast #228 of railscasts, but when I want to sort
the "Marque" column, it sort by ID and not by name...

So the question is, how do I do a sortable table column, with multiple
table?

If you need some of my code, juste ask what part you want.

Thanks!
++++

--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

Search Discussions

  • Walter Lee Davis at Feb 15, 2012 at 10:06 pm

    On Feb 15, 2012, at 4:34 PM, Dl33ter Yay wrote:

    Hi!

    I'm a RoR beginner, and I have a problem with my "app".

    I have a table called " annonces " and a table called " marques ".
    (It's like "post" and "category", for a blog app)

    I'm following the screencast #228 of railscasts, but when I want to sort
    the "Marque" column, it sort by ID and not by name...

    So the question is, how do I do a sortable table column, with multiple
    table?
    Could you clarify if you want this to be sortable in the sense of "drag to sort", in the sense of "click on a header to sort by that attribute", or simply that you want to get the records out in a particular order when you request them in your controller?

    If you mean the last of these, then you could do something as simple as:

    @marques = Marque.order(:name)

    Walter
    If you need some of my code, juste ask what part you want.

    Thanks!
    ++++

    --
    Posted via http://www.ruby-forum.com/.

    --
    You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
    To post to this group, send email to rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
    --
    You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
    To post to this group, send email to rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
  • Dl33ter Yay at Feb 16, 2012 at 12:45 pm
    Hi!

    It's more "click on a header to sort by that attribute".

    For example, if you click on the name of the column (Marque) this should
    sort alphabetical ASC and DESC: AUDI - BMW - VOLKSWAGEN / Re-click :
    VOLKSWAGEN - BMW - AUDI.

    Like I said in my 1st post, I'm following this screencast :
    http://railscasts.com/episodes/228-sortable-table-columns

    You can see on this page a thumbail of the result.

    But in my case, it's with multiple table ( Marque, Modele, Energie...)

    The screencast work perfectly when everything is in the same table.

    But I want to do it with content from other table.

    Again, if you need my code, juste ask what you want.

    Thanks for your answer.
    Bye!
    ++++

    --
    Posted via http://www.ruby-forum.com/.

    --
    You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
    To post to this group, send email to rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
  • Walter Lee Davis at Feb 16, 2012 at 4:43 pm

    On Feb 16, 2012, at 7:44 AM, Dl33ter Yay wrote:

    Hi!

    It's more "click on a header to sort by that attribute".

    For example, if you click on the name of the column (Marque) this should
    sort alphabetical ASC and DESC: AUDI - BMW - VOLKSWAGEN / Re-click :
    VOLKSWAGEN - BMW - AUDI.

    Like I said in my 1st post, I'm following this screencast :
    http://railscasts.com/episodes/228-sortable-table-columns

    You can see on this page a thumbail of the result.

    But in my case, it's with multiple table ( Marque, Modele, Energie...)

    The screencast work perfectly when everything is in the same table.

    But I want to do it with content from other table.

    Again, if you need my code, juste ask what you want.
    What does your controller look like, and what does your view look like where you build this table? If you're pulling from multiple models, you're doing that somewhere in the controller (I hope) and building an array for marques, models and energies. That's where the sorting needs to happen.

    Walter
    Thanks for your answer.
    Bye!
    ++++

    --
    Posted via http://www.ruby-forum.com/.

    --
    You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
    To post to this group, send email to rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
    --
    You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
    To post to this group, send email to rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
  • Dl33ter Yay at Feb 16, 2012 at 6:49 pm
    In my 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

    For the " def index " I tried :
    @annonces = Annonce.order(sort_column + " " + sort_direction)
    @marques = Marque.all

    and

    @annonces = Annonce.find(params[:id])
    @marques = Marque.order(sort_column + " " + sort_direction)

    In my 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

    the annonce.rb model :
    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
    the marque.rb model :
    class Marque < ActiveRecord::Base
    attr_accessible :marque
    has_many :modeles
    has_many :annonces
    end

    The view : 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>

    The view of marque look like this.

    My tables looks like that :

    Annonces:
    create_table :annonces do |t|
    t.integer :marque_id
    t.integer :modele_id
    t.string :price
    t.string :power
    t.string :energy

    Marque:
    create_table :marques do |t|
    t.string :marque

    t.timestamps

    I hope this will help...

    I'd create all this by doing : rails g scaffold marque marque:string
    Or : rails g scaffold annonce marque_id:integer [...]

    Thank you again ;)

    ++++

    --
    Posted via http://www.ruby-forum.com/.

    --
    You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
    To post to this group, send email to rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouprubyonrails-talk @
categoriesrubyonrails
postedFeb 15, '12 at 9:34p
activeFeb 16, '12 at 6:49p
posts5
users2
websiterubyonrails.org
irc#RubyOnRails

2 users in discussion

Dl33ter Yay: 3 posts Walter Lee Davis: 2 posts

People

Translate

site design / logo © 2022 Grokbase