繁体   English   中英

如何将变量的值从 javascript 传递到 rails

[英]how to pass value of a variable from javascript to rails

我对 Rails 很陌生,请帮帮我。

这是我的 javascript 我希望filename值在控制器page_controller传递给create_table操作

$(document).ready(function(){
$("#prefix, #client, #myFile").change(function(){
    concatenated_string = $("#prefix").val() + "_" + $("#client").val() + "_" + $("#myFile").val();
    $("#concatenated_string").val(concatenated_string);
     myvar = concatenated_string.replace(/C:\\fakepath\\/i, '');
     myvar = myvar.replace(/\..+$/, '');
     myvar = myvar.replace(/\s+/, "_");

     var filename = myvar //This variable

    $("#temp_display").text(filename)

 })
})

下面的文件是我的page_controller.rbcreate_table操作

class PageController < ApplicationController

  # before_action :authenticate_user!
  #before_action :set_company, only: [:show, :edit, :update, :destroy]
  before_action :authenticate_user!, only: [:index]

  def home
  end


  def titlebar
  end


 def insert_table
  #redirect_to :action => "create_table"
 end 

  def create_table

            filename = params[:filename]

  end  
end

这就是我在终端中得到的

    Started POST "/page/create_table" for ::1 at 2017-01-28 20:45:05 +0530
Processing by PageController#create_table as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"TAcnZfhr8Amg8/xupgJVlAosz+/hNPgFgxVT4cg5x+OKvRwvrtm6Z5momvQiHsYBcl1tZWUu525Z1VTxqWIu8Q==", "commit"=>"upload file"}
  Rendering page/create_table.html.erb within layouts/application
  Rendered page/create_table.html.erb within layouts/application (0.5ms)
Completed 200 OK in 190ms (Views: 186.7ms | ActiveRecord: 0.0ms)

您可以使用如下形式的隐藏输入字段,可以为其附加文件名值,以便您可以在create_table操作中捕获该值。

#in your form
<input type="hidden" name="filename" id="my_file_name" value="">

并在脚本中

$(document).ready(function(){
$("#prefix, #client, #myFile").change(function(){
    concatenated_string = $("#prefix").val() + "_" + $("#client").val() + "_" + $("#myFile").val();
    $("#concatenated_string").val(concatenated_string);
     myvar = concatenated_string.replace(/C:\\fakepath\\/i, '');
     myvar = myvar.replace(/\..+$/, '');
     myvar = myvar.replace(/\s+/, "_");

     var filename = myvar //This variable

    $("#temp_display").text(filename);
    $("#my_file_name").val() = filename; //Add this line

 })
})

现在,您可以使用params[:filename]捕获filename的值。

我得到了解决方案。

这是我的js

function myFunction()
{
    concatenated_string = $("#prefix").val() + "_" + $("#client").val()     + "_" + $("#myFile").val();
 $("#concatenated_string").val(concatenated_string);
 myvar = concatenated_string.replace(/C:\\fakepath\\/i, '');
 myvar = myvar.replace(/\..+$/, '');
 myvar = myvar.replace(/\s+/, "_");

 var filename = myvar;

$("#temp_display").text(filename);
document.getElementById("my_file_name").value = filename;  
}

这是我认为 pavan 所建议的

<input type="hidden" name="filename" id="my_file_name" value="">

这是我的控制器

  def create_table
        filename = params[:filename]
        content = params[:file].path
  end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM