-1

私はこれに苦労したり、検索したりしましたが、今は助けを求める準備ができています.

コントローラー「DashboardController」があり、単一のビュー「dashboard.html.erb」があります。

dashboard.html.erb ページには 3 つのコンポーネントがあります。モデル データを使用してチャートを作成する 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> 
4

1 に答える 1

0

routes.rb ファイルや を確認しないDashboardsControllerと、何が起こっているのかを推測するのは困難です。

フォームタグは、予想されるメソッド (おそらく「post」または「put」) を使用して正しいアクションに送信する必要があると言えます。「/dashboard」アクションを指定し、メソッドは指定していません:

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

次のように、「/dashboard」が routes.rb ファイルの「get」リクエストにマップされていると思います。

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

非典型的ですが、おそらく迅速な変更は、「get」リクエストと「post」リクエストの両方を許可することです。

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

また、ポスト リクエストによって送信されたパラメーターを処理するようにコントローラー アクションが設定されていることを確認する必要があります。

于 2013-01-11T05:11:25.823 に答える