如何在提交表单时获取要更新的rails页面?

时间:2013-01-10 21:11:49

标签: ruby-on-rails-3 forms action

我一直在努力寻找,搜索等等,现在我已经准备好寻求帮助了。

我有一个控制器'DashboardController',我有一个视图'dashboard.html.erb'。

dashboard.html.erb页面有三个组件;一些使用模型数据创建图表的javascript,一个用于保存图表的div,以及一个用于选择图表选项的表单。

这一切都有效。我提交表单时可以在提交表单时将参数正确放入查询字符串中,但包含图表目标的div在提交时不会更新。

基本上希望拥有一个表单驱动的图表,无法实现。令人沮丧。

我是Rails的新手,我对控制器,路由和操作的了解仍在不断发展。

在我的代码中遇到Rails的form_tag方面有困难,我在这里切换到一个简单的表单。依然没有。

任何帮助都将不胜感激。

<script type="text/javascript">
$(function() {
    new Highcharts.Chart({
        chart: {
            renderTo: "orders_chart",
            type: "column"
        },
        title: {
            text: "Sales Billings - <%= params[:sale_year] %>"
        },
        xAxis: {
            categories: [1,2,3,4]
        },
        yAxis: {
            text: "Billings"
        },
        tooltip: {
            formatter: function() {
                return 'Q-' + this.x + ': ' +
                    "$" + Highcharts.numberFormat(this.y,2);
            }
        },
        series: [{
        name: "Business Unit A",
        data: <%= Sale.where(:year => params[:id], :segment => 'IT    Infrastructure').each.map { |row| row.billings.to_f }.inspect %>
        },{
        name: "Business Unit B",
        data: <%= Sale.where(:year => params[:id], :segment => 'Collaboration').each.map { |row| row.billings.to_f }.inspect %>
        },{
        name: "Business Unit C",
        data: <%= Sale.where(:year => params[:id], :segment => 'MSP').each.map { |row| row.billings.to_f }.inspect %>
        }]
    });


});

<div id="orders_chart" style="width:560px; height:380px;"></div>
<form accept-charset="UTF-8" action="/dashboard" method=""> 
    <select id="sale[:year]" name="sale_year" data-mini="true" data-corners="false">
    <option>Year</option>
    <%  @salesyear = Sale.select(:year).uniq
        @salesyear.each do |years| %>
        <option value="<%=years.year %>"><%=years.year %></option>
    <% end %> 
    </select>

    <select id="sale[:quarter]" name="sale_quarter" data-mini="true" data-corners="false">
    <option>Quarter</option>
    <%  @salesqtr = Sale.select(:quarter).uniq
        @salesqtr.each do |qtr| %>
        <option value="<%=qtr.quarter %>">Q<%=qtr.quarter %></option>
    <% end %> 
    </select>

    <select id="sale[:month]" name="sale_month" data-mini="true" data-corners="false">
    <option>Month</option>
    <%  @salesm = Sale.select(:month).uniq
        @salesm.each do |month| %>
        <option value="<%=month.month %>">Month - <%=month.month %></option>
    <% end %> 
    </select>


<input name="commit" type="submit" value="Update" class="ui-btn-hidden" aria-disabled="false" data-theme="c" data-mini="true" data-icon="search" data-iconpos="right" data-corners="false">


</form> 

1 个答案:

答案 0 :(得分:0)

如果没有看到您的routes.rb文件或DashboardsController,就很难推断出发生了什么。

我可以说你的表单标签需要使用预期的方法(可能是“post”或“put”)提交正确的操作。你已经指定了“/ dashboard”操作而没有方法:

<form accept-charset="UTF-8" action="/dashboard" method="">

我猜测“/ dashboard”映射到routes.rb文件中的“get”请求,如:

match "/dashboard", to: "dashboards#dashboard"

非典型但可能很快的变化是允许“获取”和“发布”请求:

match "/dashboard", to: "dashboards#dashboard", via: [:get, :post]

您还需要确保设置控制器操作以处理发布请求发送的参数。