簡體   English   中英

將數據從simple_form發送到javascript

[英]Sending data from simple_form to javascript

我有一個有效的JavaScript:

 .search_client_users
    = form_tag admin_clients_path, method: "get", class: "search_form" do
      = label_tag 'search_term', 'Search for client users:'
      = text_field_tag 'search_term', nil, autocomplete: "off", size: "50"

    .client_list

- content_for :javascript do
  = javascript_include_tag 'admin/search_client_users'

搜索客戶端並列出與查詢匹配的客戶端。

我想在普通的simple_form中使用它:

    .main_form.client_emails
      = simple_form_for(:domainNameSwap, url: { action: "update" }, html: { method: :put }) do |f|
        .input-row
          = f.input :oldDomain, :label => "Domain Name",wrapper_html: { id: 'search_term' }
        .submit-row
          .col-xs-5
            .submit
              = f.submit "Update domains", id: "submit", :class => "btn btn-primary submit"

    .client_list


- content_for :javascript do
  = javascript_include_tag 'admin/search_client_users'

但我不知道如何將標簽添加到javascript ...

似乎工作代碼中相關的部分是text_field_tag = 'search_term'這似乎是將文本字段與javascript相關聯的部分。 但是我不知道如何在simple_form中使用它...

如果重要的話,請在下面的coffeescript中:

class App.ClientUserList
  constructor: ->
    @incrementalSearchAttempts = 0

  search: (searchTerm, completeCallback) =>
    handleResponseWithOrderAwareness = (attemptNumber, response) =>
      if attemptNumber >= @incrementalSearchAttempts
        completeCallback(response)

    @incrementalSearchAttempts++
    onComplete = _.partial(handleResponseWithOrderAwareness, @incrementalSearchAttempts)
    $.get('/admin/manage_clients/client_list', { search_term: searchTerm }).complete(onComplete)

class App.Views.SearchClientUsers extends Backbone.View
  events:
    "keyup input[name='search_term']": "search",
    "click .profile_attribute": "showClientUserProfile"

  initialize: =>
    @clientUserList = new App.ClientUserList()

  search: =>
    searchTerm = $('.search_form input[name=search_term]').val()
    @clientUserList.search(searchTerm, @render)

  showClientUserProfile: (event) =>
    window.location = $(event.currentTarget).closest('tr').data('client-path')

  render: (response) =>
    @$el.find('.client_list').html(response.responseText)

$ ->
  new App.Views.SearchClientUsers(el: $('.search_client_users')).search()

ETA:簡化:我認為我需要兩件事:

  1. 我需要將simple_form的類設置為“ search_form”
  2. 我需要做等效於text_field_tag行,但對於f.input行。

我很確定第一個應該只是在simple_form的html部分添加class: "search_form"

但是,我不知道如何設置“ text_field_tag

對於將來的搜索者:看來我是正確的,我需要設置simple_form的類,並且需要設置f.input的“名稱”。

input_html: {name: 'search_term'}選項添加到f.input行即可解決此問題。

但是,這也意味着該值不是在控制器中,而是在params.domainNameSwap.oldDomainName ,而是在params.search_term這是我可以忍受的一個問題...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM