###実現したいこと
indexにてx枚の画像から、ランダムで2枚のみ抽出し表示させました。
クリックした画像の"score"カラムの数値を+=1させ、
クリックしなかった画像の"score"カラムの数値を-=1させたいです。
###発生している問題
クリックした方に+=1をさせることは出来ましたが、
クリックしなかった方に-=1をすることが出来ません。
おそらくif文を使えば良いとは分かるのですが、どのメソッドを使えば良いのか困っています。
###ソースコード
schema.rb create_table "photoposts", force: :cascade do |t| t.string "photo", limit: 255 t.string "caption", limit: 255 t.integer "score", limit: 4, default: 1500 t.integer "user_id", limit: 4 t.datetime "created_at" t.datetime "updated_at" end
routes.rb root to: 'photoposts#index' match '/', to: 'photoposts#vote', via: 'patch'
index.html.erb <% @photoposts.each do |photopost| %> <%= link_to image_tag(photopost.photo_url), root_path(:id => photopost.id), :method => "patch" %> <% end %>
photoposts_controller.rb def vote @photopost = Photopost.find(params[:id]) @photopost.score += 1 @photopost.save redirect_to root_url end
ご教授のほど宜しくお願い致します。
###追記
##修正 10/13 photoposts_controller.rb def index @photoposts = Photopost.find(Photopost.pluck(:id).shuffle[0..1]) end def vote @temp = params[:id] logger.debug(@temp) logger.debug(@target1) logger.debug(@target2) @target1 = Photopost.find(session[:target1]) ##Couldn't find Photopost with 'id'= @target2 = Photopost.find(session[:target2]) if session[:target1] == params[:id] @target1.score += 1 @target1.save @target2.score -= 1 @target2.save redirect_to root_url elsif session[:target2] == params[:id] @target1.score -= 1 @target1.save @target2.score += 1 @target2.save redirect_to root_url end end
<% count = 1, @photoposts.each do |photopost| %> <%= link_to image_tag(photopost.photo_url), root_path(:id => photopost.id), :method => "patch" %> <% session[('target'+count.to_s).to_sym]=photopost.id count=2 end%>
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/10/13 14:04 編集
退会済みユーザー
2015/10/13 16:19 編集
退会済みユーザー
2015/10/15 01:58 編集