0

おはようございます 私の Ruby On Rails アプリケーションでは、勝敗の統計カウンターを構築しようとしています。これらの統計は、マイ ページのサイドバーに表示され、常に表示されます。これらの値については、Stats という名前のモデルを使用します。統計情報はグローバルに利用できるようにする必要があります。これは、統計情報をすべての面に表示したいので、application_helper.rb に配置するためです。また、管理者のみに表示される [勝ちの追加] または [負けの追加] リンクをクリックすると呼び出される 2 つのアクションもあります。リンクをクリックすると、メイン ページにリダイレクトされます。現時点では、誰かがサイトにアクセスしたり更新したりするたびに、両方のカウンターが増加します。この問題を数時間解決しようとしていますが、まだ解決できません。

私のapplication_helper

module ApplicationHelper

def stats
    @stats = Stats.find(1)
end
def addwin
    @stats = Stats.find(1)
    @stats.update_attribute(:wins, @stats.wins+1)
end

def addloss
    @stats = Stats.find(1)
    @stats.update_attribute(:loss, @stats.loss+1)

end

終わり

サイドバーが配置されている私の application.html.erb ファイルの抜粋:

    <tr><td>Dotards StatsTracker</td></tr>
    <tr><td>Wins: </td><td style="color:green"><%= stats.wins%></td></tr>
    <tr><td>Losses: </td><td style="color:red"><%= stats.loss%></td></tr>

    <hr>
    </table >
    <%if user_signed_in? && current_user.admin? %>
        <small><%= link_to "Add Win", news_index_path(addwin) %>|<%= link_to "Add Loss", news_index_path(addloss)%></small>
    <% end %>

他に何ができるかわからないので、誰かが私を助けてくれたら最高です。事前にどうもありがとうございました。

4

1 に答える 1

0
news_index_path(addwin)

ページの生成時に add win メソッドを直接呼び出すため、カウンターが増加します。

2 つのメソッドを適切なコントローラー (おそらく news_controller?) に移動し、次のように config/routes.rb にルートを作成します。

match '/addwin', to: 'news#addwin'

次に、次のように使用できるパス ヘルパーを取得します。

link_to "Add Win" addwin_path

を実行rake routesして、生成されたヘルパー名を確認します。

追加:Singleton Statをモデルと見なし、コントローラーで使用されるメソッドを定義します。

于 2012-07-29T11:27:15.703 に答える