2013-11-10 3 views
1

Я новичок в rails.In мое приложение rails Я хочу сортировать контент по выпадающему списку.Сортировать по рельсам приложение

В моем выпадающем списке у меня есть несколько вариантов, таких как «имя», «цена». Теперь, если я нажму имя из списка, я хочу, чтобы содержимое сортировалось по названию. Посмотрите картинку: when i select from the sort by dropdown then i want to sort the content according to selected option

Я понятия не имею, как это сделать в рельсах.

Пожалуйста, помогите мне.

+1

проверить [сортировать] (http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-sort) и [sort_by] (http://ruby-doc.org/ core-2.0.0/Enumerable.html # method-i-sort_by) – dax

ответ

2

Мы не можем вам предложить что-либо конкретное, если вы не разделяете свой код контроллера. В большинстве случаев вы просто указываете предложение order в свой запрос БД.

Например:

class ProductsController < ApplicationController 
    def index 
    # assuming You passed order field in GET param: /products?order_by=name 
    @products = Product.order(params[:order_by]) 
    end 
end 

ОБНОВЛЕНО

Вы должны быть в состоянии использовать его это method для цитирования. Он определяется на Ваш объект подключения (SomeModel.connection)

irb(main):001:0> Movie.connection.quote_column_name("name") 
=> "\"name\"" 
irb(main):004:0> Movie.connection.quote_column_name("name; DELETE FROM users;") 
=> "\"name; DELETE FROM users;\"" 

Даже лучше, вероятно, будет использовать только имена столбцов, определенных Вами.

+1

Опасайтесь, ваш примерный код открыт для SQL-инъекций, см. http://stackoverflow.com/questions/7771103/rails-3-activerecord-order- what-is-the-proper-sql-injection-work-around-note rails будет обрабатывать параметры, переданные методу where, но не метод заказа – house9

+1

Спасибо за ответ. Мой код формы: <% = form_for (@category,: url => sort_item_category_path, метод: 'GET',: class => "form-inline pull-left") do | f | %> Сортировать по: <выберите класс = "Span2" ID = "сортировать"> конец .И хочу знать, как отправить параметры [: order_by] на контроллер @edgarsJejabsons – monsur

+0

Согласитесь, что это должно быть экранировано. –

Смежные вопросы