質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1214閲覧

RailsにてEloratingの実装をしましたが、うまく反映されない。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2015/10/27 15:01

編集2015/10/28 09:44

###ゲーム内容
① データベースに格納されているx枚の画像から、
2枚をランダムに抽出し、並べて表示させます。(@target1, @target2として定義。)
画像はElorateカラムを持っていてデフォルトの数値は1500です。

② クリックした画像のElorateを公式に基づき更新させ、
同様にクリックしなかった画像のElorateも更新させる。

###ソースコード

def index @photoposts = Photopost.find(Photopost.pluck(:id).shuffle[0..1]) @target1 = @photoposts[0] @target2 = @photoposts[1] end . . . def vote @target1 = Photopost.find(params[:target1]) @target2 = Photopost.find(params[:target2]) @ra = @target1.elorate @rb = @target2.elorate @ea = 1 / ( 1 + ( 10 ** ((@rb - @ra) / 400))) @eb = 1 / ( 1 + ( 10 ** ((@ra - @rb) / 400))) @rawin = @ra + 16 * (1 - @ea) @ralose = @ra + 16 * (0 - @ea) @rbwin = @rb + 16 * (1 - @eb) @rblose = @rb + 16 * (0 - @eb) if params[:target1] == params[:id] @target1.elorate = @rawin @target1.save @target2.elorate = @rblose @target2.save redirect_to photoposts_path elsif params[:target2] == params[:id] @target1.elorate = @ralose @target1.save @target2.elorate = @rbwin @target2.save redirect_to photoposts_path end end
<% @photoposts.each do |photopost| %> <%= link_to image_tag(photopost.photo_url), photoposts_path(:id => photopost.id,:target1 => @target1,:target2 =>@target2), :method => "patch" %> <%= photopost.elorate %> <% end %>

###起きている問題
Elorate1500(画像id:1) VS Elorate1500(画像id:2)で、
画像id:1をクリックしたらElorate1516になったのですが、
画像id:2のElorateが更新されませんでした。

私はなぜ正しく実装できなかったのでしょうか?
回答宜しくお願いします。

###追記
Elorateを使用せずにクリックした画像に+=1, しなかった画像に-=1にした場合は正常に動作します。
なので数式の書き方に問題があるのでしょうか?
ご教授願います。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

小数点を付けると正常?に動くようになったので、
自己解決にて締めさせていただきます。
ご閲覧ありがとうございました。

投稿2015/10/28 10:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問