###開発環境
- MacOS X 10.11 El Capitan
- Ruby 2.3.1
- Ruby on Rails 4.2.6
###発生している問題・エラーメッセージ
ECサイトを作っています。Railsでセッションにデータを入れて、ビューで取り出すとビューに余計な枠が混じってしまうので、その部分だけ消したいです。状況は以下の画像のとおりです。
ソースは下記のとおりです。
html
1<!DOCTYPE html> 2<html> 3<head> 4 <title>Slup</title> 5 <link rel="stylesheet" media="all" href="/assets/carts-539b1b2d248fcacaf845c897cae976a6.css?body=1" data-turbolinks-track="true" /> 6<link rel="stylesheet" media="all" href="/assets/details-539b1b2d248fcacaf845c897cae976a6.css?body=1" data-turbolinks-track="true" /> 7<link rel="stylesheet" media="all" href="/assets/home-539b1b2d248fcacaf845c897cae976a6.css?body=1" data-turbolinks-track="true" /> 8<link rel="stylesheet" media="all" href="/assets/products-539b1b2d248fcacaf845c897cae976a6.css?body=1" data-turbolinks-track="true" /> 9<link rel="stylesheet" media="all" href="/assets/application-2e9d1cb72084fa4225b20f531bad849f.css?body=1" data-turbolinks-track="true" /> 10 <script src="/assets/jquery-24e9e31ece1989ef3791bcd53ea38cab.js?body=1" data-turbolinks-track="true"></script> 11<script src="/assets/jquery_ujs-e9c99e4aa7db66a7f23b948d7d043bd8.js?body=1" data-turbolinks-track="true"></script> 12<script src="/assets/turbolinks-95919f04de70dd97e4a820144b05e4c0.js?body=1" data-turbolinks-track="true"></script> 13<script src="/assets/carts-f6c6ef02137813db1b2df8e2c31983a1.js?body=1" data-turbolinks-track="true"></script> 14<script src="/assets/details-f6c6ef02137813db1b2df8e2c31983a1.js?body=1" data-turbolinks-track="true"></script> 15<script src="/assets/home-f6c6ef02137813db1b2df8e2c31983a1.js?body=1" data-turbolinks-track="true"></script> 16<script src="/assets/products-f6c6ef02137813db1b2df8e2c31983a1.js?body=1" data-turbolinks-track="true"></script> 17<script src="/assets/application-e4664d6559033263dddf18520aca44be.js?body=1" data-turbolinks-track="true"></script> 18 <meta name="csrf-param" content="authenticity_token" /> 19<meta name="csrf-token" content="AIlS+RmQE7is3wczlmALb4NyzVCa12ylGwDUl75H9nbpeWsUmoCiWQqnvTddAvyM/Ha4yykqOA5RDbq2zqdbbg==" /> 20</head> 21<body> 22 <header> 23 <nav> 24 <!-- user_signed_in? はユーザがログインしているか調べるdeviseのHelperメソッド --> 25 <!-- current_user は現在ログインしているUserオブジェクトを返すdeviseのHelperメソッド --> 26 <!-- *_path はUserモデルを作成したときに、 27 deviseにより自動で作成されてますので、rake routesで確認できます --> 28 Logged in as <strong>test@example.com</strong>. 29 <a href="/users/edit">プロフィール変更</a> | 30 <a rel="nofollow" data-method="delete" href="/users/sign_out">ログアウト</a> 31 </nav> 32 </header> 33 34 <p class="notice"></p> 35 <p class="alert"></p> 36 37<h1>カートの中身</h1> 38 39<table border="1"> 40 <tr> 41 <td>商品番号</td> 42 <td>値段</td> 43 <td>商品説明</td> 44 <td>画像</td> 45 <td>個数</td> 46 </tr> 47 <tr> 48 <td>16</td> 49 <td>300</td> 50 <td>赤い時計</td> 51 <td><a href="/products/16"><img src="https://anvinon.s3.amazonaws.com/uploads/product/image/16/watch004.png" alt="Watch004" /></a> </td> 52 <td>5</td> 53 </tr> 54 <tr> 55 <td></td> 56 <td></td> 57 <td></td> 58 <td><a href="/products/16"><img src="https://anvinon.s3.amazonaws.com/uploads/product/image/16/watch004.png" alt="Watch004" /></a> </td> 59 <td></td> 60 </tr> 61</table> 62 63 64 65 <footer> 66 <a href="/">トップに戻る</a> 67 </footer> 68</body> 69</html> 70
ビューで取り出すまでの流れは下記のとおりです。
- showアクションとaddアクションでsession[:cart]にデータを入れる。
showは商品詳細です。addは買い物カートへの商品追加です。contentは買い物カートの中身です。
ruby
1# app/controllers/products_controller.rb 2 3 def show 4 @product = Product.find(params[:id]) 5 session[:cart] ||= {} 6 session[:cart]["#{params[:id]}"] = Product.find(params[:id]) 7 end 8 9 def add 10 session[:cart]["#{params[:id]}_item"] = params[:item] 11 end 12 13 def content 14 end
2.contentでデータを表示させます。
html
1# app/views/products/content.html.erb 2 3<h1>カートの中身</h1> 4 5<table border="1"> 6 <tr> 7 <td>商品番号</td> 8 <td>値段</td> 9 <td>商品説明</td> 10 <td>画像</td> 11 <td>個数</td> 12 </tr> 13 <% session[:cart].each do |key, value| %> 14 <tr> 15 <td><%= session[:cart]["#{key}"]["id"] %></td> 16 <td><%= session[:cart]["#{key}"]["price"] %></td> 17 <td><%= session[:cart]["#{key}"]["description"] %></td> 18 <td><%= link_to image_tag(Product.find("#{key}").image.url), { :controller => :products, :action => :show, :id => Product.find("#{key}").id }%> </td> 19 <td><%= session[:cart]["#{key}_item"] %></td> 20 </tr> 21 <% end %> 22</table>
最後に、contentアクションにbinding.pryを入れたときのセッションの中身は下記のとおりです。
ruby
1From: /Users/anvinon/projects/slup/app/controllers/products_controller.rb @ line 29 ProductsController#content: 2 3 28: def content 4 => 29: binding.pry 5 30: end 6 7[1] pry(#<ProductsController>)> session[:cart] 8=> {"16"=> 9 {"id"=>16, 10 "price"=>300, 11 "description"=>"赤い時計", 12 "created_at"=>"2017-03-28T21:47:51.065Z", 13 "updated_at"=>"2017-03-28T21:47:51.065Z", 14 "image"=>{"url"=>"https://anvinon.s3.amazonaws.com/uploads/product/image/16/watch004.png"}, 15 "quantity"=>nil}, 16 "16_item"=>"5"} 17
以上ですが、何故余計な枠(行)が混じってしまうのかわかりません。
ご教示ください。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/07 06:39
2017/04/07 06:41
2017/04/07 06:42