【问题标题】:Sending data from simple_form to javascript将数据从 simple_form 发送到 javascript
【发布时间】:2018-12-25 15:43:37
【问题描述】:

我有一个可用的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 一起使用...

下面的咖啡脚本,以防它很重要:

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()

预计到达时间: 简化:我想我需要两件事:

  1. 我需要将 simple_form 的类设置为“search_form”
  2. 我需要做与text_field_tag 行等效的操作,但对于 f.input 行。

我很确定第一个应该只是在 simple_form 的 html 部分添加class: "search_form"

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

【问题讨论】:

    标签: javascript ruby-on-rails backbone.js coffeescript simple-form


    【解决方案1】:

    对于以后的搜索者:看来我是对的,我需要设置simple_form的类,我需要设置f.input的“名称”。

    input_html: {name: 'search_term'} 选项添加到 f.input 行可以解决此问题。

    但是,这也意味着在控制器中,值不是在 params.domainNameSwap.oldDomainName 中,而是在 params.search_term 中,这是一个我可以忍受的问题......

    【讨论】:

      猜你喜欢
      • 2012-01-14
      • 2014-06-26
      • 2012-08-11
      • 2020-09-27
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2018-04-04
      相关资源
      最近更新 更多