[英]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.rb
和create_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.