On 2 Вер, 09:17, Igor Kasyanchuk <igorkasyanc...@gmail.com> wrote:
> и еще неплохо защититься от sql injections
>
> On Sep 1, 10:57 pm, Sergey Pchelincev <jalkob...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Если я правильно понял, то будет так. Допусти есть поля title, color,
> > format, type у записи node. Все они varchar(255) или text, тогда view
> > будет таким
>
> > <%= form_tag search_nodes_path do%>
> > <% select_value = [['And', 'AND'],['Or', 'OR']]%>
> > <% ['title', 'format', 'color', 'type'].each do |field|%>
> > <p>
> > <label><%= field.capitalize%></label>
> > <%= text_field 'search', "#{field}[key]"%>
> > <%= select 'search', "#{field}[type]", select_value %>
> > </p>
> > <%end%>
> > <%= submit_tag 'Search'%>
> > <%end%>
>
> > controller
>
> > def search
> > and_part = params[:search].map {|field, param| "#{field} LIKE
> > '#{param[:key]}%'" if param[:type] == 'AND'}.compact.join(" AND ")
> > full_query = params[:search].map{|field, param| "(#{field} LIKE
> > '#{param[:key]}%' AND #{and_part})" if
> > param[:type]=='OR'}.compact.join(' OR ')
> > full_query = and_part if full_query.blank?#на случай если все AND
> > @nodes = Node.where(full_query)
> > render :index
> > end
> > Возможно коллекцию параметров лучше вынести в helper или model. Да и
> > генерацию sql_query будет неплохо отдать модели node
> > В итоге получается следующий запрос:
>
> > SELECT "nodes".* FROM "nodes" WHERE ((format LIKE 'dsfsdfsf%' AND
> > title LIKE 'sdasa%' AND color LIKE 'dsfsfsd%' AND year LIKE 'dsfsdfsd
> > %') OR (type LIKE 'dsfsfs%' AND title LIKE 'sdasa%' AND color LIKE
> > 'dsfsfsd%' AND year LIKE 'dsfsdfsd%'))
>
> > On 1 Вер, 18:53, Жоржик <katsgeorg...@gmail.com> wrote:
>
> > > Есть задание: сделать форму поиска по нескольким полям. Каждое поле
> > > имеет дополнительный параметр равный and или or (подставляется в
> > > запросе).
> > > Я новичек в rails, помогите реализовать.
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
пятница, 2 сентября 2011 г.
Re: Advanced Search Form
areal её выполняет на ура, если конечно rails > 3.0.0
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий