Ruby on rails 如何将javascript变量从Rails视图传递到操作

Ruby on rails 如何将javascript变量从Rails视图传递到操作,ruby-on-rails,view,action,rails-admin,Ruby On Rails,View,Action,Rails Admin,我有一个用户电子邮件列表,在我的视图中有一些Javascript代码,是我为我的操作创建的。该视图采用haml格式。 我想按表单上的提交按钮,在同一个操作或另一个操作中访问此电子邮件列表 我尝试过使用form_标签、form_for和普通html表单,但是我一直遇到不同的问题。我还测试了link_to和button_to标签 以下是我们的行动: module RailsAdmin module Config module Actions class BulkPropert

我有一个用户电子邮件列表,在我的视图中有一些Javascript代码,是我为我的操作创建的。该视图采用haml格式。 我想按表单上的提交按钮,在同一个操作或另一个操作中访问此电子邮件列表

我尝试过使用form_标签、form_for和普通html表单,但是我一直遇到不同的问题。我还测试了link_to和button_to标签

以下是我们的行动:

module RailsAdmin
  module Config
    module Actions
      class BulkProperties < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)

        register_instance_option :collection do
          true
        end

        register_instance_option :http_methods do
          [:get, :put]
        end

        register_instance_option :controller do
          proc do
            @all_users = User.all
            @all_properties = UserProperty.all
            @all_roles = Role.all
            binding.pry
            if request.get? # EDIT
              respond_to do |format|
                format.html { render @action.template_name }
                format.js   { render @action.template_name, layout: false }
              end

            elsif request.put? # UPDATE
              binding.pry #Just testing this
          end
        end

        register_instance_option :link_icon do
          'icon-lock'
        end
      end
    end
  end
end

结果是我被带到了一个坎坎问题上,我得到了“你没有被授权……”。这是因为url实际上最终保存了参数,因此它试图将我重定向到一个不存在的网页。

我实现了一个操作,将一个带有js的文件上载到S3,并使用javascript设置表单字段的值,然后在rails管理操作中使用该url

我之所以粘贴这一切,是因为在过去,通过比较我的方法和工作方法,这本可以帮助我解决这些问题

以下是相关(简化)文件:

#lib/rails_admin/config/actions/update_orders_和_line_items.rb
模块RailsAdmin
模块配置
模块动作
类UpdateOrdersAndLineItems

我相信你的错误源于使用
%form
标记,表单的默认方法是GET,这就是为什么你的浏览器试图将你重定向到某个页面,如果你像我一样使用
form_标记(method::post)
并确保电子邮件位于隐藏字段_标记值上,你会在行动中得到你的名单。rb

谢谢你,这让我走上了正确的轨道,现在我的行动中有了我的参数!
%form
  .multiselect-form
    .wrapper{"data-children-count" => "1"}
      %select.collection{:multiple => "multiple", :id => "multi"}
  %hr/
  %h1 List of user properties
  -@all_properties.each do |prop|
    %input{:name => prop.name+"checkbox", :type => "checkbox", :id => prop.name+"checkbox"}
    #{prop.name}
    %input{:name => prop.name, :type => "text", :id => prop.name}
    %br
  %input{:name => "submit", :type => "submit", :formaction => 'http://localhost:3000/admin/user/bulk_properties?Application=8&Company=1&locale=en', :method => 'put'}
%br/
%br/
# app/views/rails_admin/main/update_orders_and_line_items.html.haml

= form_tag(method: :post) do
  = hidden_field_tag 'uploaded-file-url', '', id: 'uploaded-file-url'
  = submit_tag 'Submit', class: 'action-button-pink'
# app/assets/javascripts/google_cloud_storage_field.js 

let url = get_url(fileInput);
let valueField   = $('#uploaded-file-url');
valueField.val(url);