我想读取用户引入的变量并将其传递给我的控制器。我对ruby和rails非常新。 index.html.erb是这样的:
<h1>Welcome#index</h1>
<p>Find me in app/views/welcome/index.html.erb</p>
<h1>Spline Chart</h1>
<div class="boxed">
<strong>Jahreshausverbrauch (kWh):</strong>
<%= form_tag do %>
<%= text_field_tag "user_entry_module1", nil, placeholder: "Bsp. 3500" %>
<%= submit_tag "Berechnen" %>
<%end%>
</div>
<div id="container"></div>
<script >
$(document).ready(function() {
var options = {
chart: {
renderTo: 'container',
type: 'spline'
},
series: [{}]
};
$.getJSON('/welcome/get_data/?factor=1', function(data) {
options.series[0].data = data;
var chart = new Highcharts.Chart(options);
});
});
</script>
因此,我想要传递user_entry_module1而不是?factor = 1,而这是客户端在表单中引入的。
我的控制器是这样的:
class WelcomeController < ApplicationController
def index
end
def get_data
#From json to hash - consumption_profile_generic
file_path = Rails.root.join('db','consumption_profile_generic_some_columns.js')
file_gen = File.read(file_path)
data_hash_gen = JSON.parse(file_gen)
# Filtering date and consumption_% ind 2 vectors and then merging them
num = data_hash_gen.count
vectorA = Array.new
vectorB = Array.new
i = 0
while num > i
vectorA[i] = data_hash_gen[i]["consumption_%"].to_f
vectorB[i] = data_hash_gen[i]["date"]
i += 1
end
data = vectorB.zip(vectorA)
factor = params[:factor].to_i
data = data.map{|i| [i[0], i[1] * factor]}
render json: data
end
答案 0 :(得分:0)
如果您只想在js代码中获得文本字段的值,可以这样做:
<%= text_field_tag "user_entry_module1", nil, placeholder: "Bsp. 3500". id: "user_entry" %> # add jquery selecter id
现在在你的js代码中执行:
$(document).ready(function() {
var myVar;
var options = {
chart: {
renderTo: 'container',
type: 'spline'
},
series: [{}]
};
$(document).on('change', '#user_entry', function(){
myVar = $(this).val();
}
$.getJSON('/welcome/get_data/?factor=' + 'myVar', function(data) {
options.series[0].data = data;
var chart = new Highcharts.Chart(options);
});
});
如果您在使用url加入变量时遇到问题,请将变量转换为字符串,然后使用url加入。
希望我能正确解决您的问题,此代码可以帮助您。