Кнопка Rails, функция remote_function.Возможно без Ajax? - PullRequest
0 голосов
/ 07 июля 2010

Я хочу создать очень простой поисковый фрагмент.Имеет текстовое поле для запроса и поиска в БД.Могу ли я создать вызов remote_function без использования AJAX или JS?Могу ли я сохранить это полностью "Rails-EE"?

<%= text_field_tag "search_term",'', :size => 10 %>
<%= button "search", :onclick => remote_function( :url => {:action => :fill_in_lots }, 
                                                  :with => "search_term" ) %>

1 Ответ

0 голосов
/ 07 июля 2010

Это не проблема, вам нужно использовать технику, называемую формальная ссылка.Вместо кнопки вы вводите кнопку с кнопкой отправки.Ниже приведен код помощника, который я использую для этого:

def formal_link_to(*args, &block)
    options = html_options = name = nil
    if block_given?
      options = args.first
      html_options = args.second
      name = capture(&block)
    else
      name         = args.first
      options      = args.second || {}
      html_options = args.third
    end

    method = html_options.delete(:method) || "POST"
    method = method.to_s.upcase
    url = url_for(options)

    html = "<form class=\"formal-link\" action=\"#{url}\" method=\"post\">"
    html += "<input type=\"hidden\" value=\"#{form_authenticity_token}\" name=\"authenticity_token\" />" 
    html += "<input type=\"hidden\" value=\"#{method}\" name=\"_method\" />" 
    html += link_to(name, "#", html_options)
    html += "</form>"

    if block_given?
      concat(html)
    else
      return html
    end
  end

Этот помощник используется как обычный link_to, но вы можете передать дополнительные параметры: method во второй хеш.Пример:

<%= formal_link_to "Fill in lots", { :action => "fill_in_lots" }, { :method => :post } -%>

Примечания: 1. Это, конечно, приведет к полной перезагрузке страницы, но это неизбежно без использования JavaScript.2. Я предположил, что действие fill_in_lots выставлено для запроса POST.В случае GET вы можете использовать обычный помощник link_to.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...