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

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

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

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

Ruby

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

Q&A

解決済

1回答

1512閲覧

acts-as-taggable-onでタグ付けした際のエラー

KayoFujii

総合スコア17

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2019/06/26 13:12

前提・実現したいこと

railsでツイート投稿アプリを作っています。
ツイートをタグづけしたいと思い、acts-as-taggable-onと言うgemを
使い、タグづけを試みたのですが、エラーが出ました。
助言をいただけると幸いです。

発生している問題・エラーメッセージ

NameError

1Showing /Users/fujiikayo/Desktop/sharefarm/app/views/tweets/index.html.erb where line #93 raised: 2 3undefined local variable or method `tweet' for #<#<Class:0x007fca3c9d67b0>:0x007fca438b0a00> 4Did you mean? @tweets 5Extracted source (around line #93): 6 <tr> 7 <th>タグ</th> 8 <td><%= render 'tweets/tag_list', tag_list: tweet.tag_list %></td> 9 </tr> 10 </thead> 11 </table> 12 13Rails.root: /Users/fujiikayo/Desktop/sharefarm

該当のソースコード

tweets/index.html.erb

ruby

1<body> 2 <div class="container text-center"> 3 <div class="row my-4"> 4 <div class="col-sm-1"> 5 </div> 6 7 <div class="card cont col-sm-10 p-2"> 8 <strong>果物を検索する</strong> 9 <%= form_tag(controller:"tweets",action:"index") do %> 10 <%= text_field_tag :search %> 11 <%= submit_tag '検索',:title => nil,:address => nil, class:"btn-gradient-radius" %> 12 <% end %> 13 </div> 14 15 <div class="col-sm-1"> 16 </div> 17 </div> 18 19 <div class="row"> 20 <% @tweets.each do |t| %> 21 <div class="col-sm-4 card cont"> 22 <div> 23 <div class="card cont m-1"> 24 <strong><%= link_to t.name, tweet_path(t.id), class: "link_option" %><%= t.weight %><%= t.money %></strong><br> 25 #省略 26 <table class="table table-bordered my-2"> 27 <thead> 28 <tr> 29 <th>ユーザー名</th> 30 <td> 31 <%= image_tag t.user.image.to_s,width:50,height:50,class: "tweet_image rounded" %><br> 32 <%= link_to t.user.name, user_path(t.user.id), class: "link_option" %> 33 </td> 34 </tr> 35 <tr> 36 <th>生産地</th> 37 <td><%= t.address %></td> 38 </tr> 39 <tr> 40 <th>投稿日</th> 41 <td> <%= t.created_at %></td> 42 </tr> 43 <tr> 44 <th>いいね数</th> 45 <td><%= t.liked_users.count %></td> 46 </tr> 47 <tr> 48 <th>タグ</th> 49 <td><%= render 'tweets/tag_list', tag_list: tweet.tag_list %></td> 50 </tr> 51 </thead> 52 </table> 53 54 <%= link_to "詳細へ", tweet_path(t.id), class:"link_option" %> 55 <% if t.user_id == current_user.id %> 56 <%= link_to "編集する", edit_tweet_path(t.id), class:"link_option" %> 57 <%= link_to "削除する", tweet_path(t.id), method: :delete, class:"link_option" %> 58 <% end %> 59 </div> 60 </div> 61 <% end %> 62 </div> 63 </div> 64 65</body>

tweets/new.html.erb

ruby

1<body> 2 <div class="container"> 3 <%= form_for(@tweet, :url => { controller:'tweets', action:'create'},class:"form-horizontal")do |f| %> 4 <div class="form-group"> 5 6 <div class="form-group"> 7 <%= f.label :画像 %> 8 <%= f.fields_for :tweet_images do |i| %> 9 <%= i.file_field :image, class:"form-control-file" %> 10 <% end %> 11 <span id="help8" class="form-text text-muted"> 12 販売したい実際の果物のサブ写真を撮影し、選択してください 13 </span> 14 </div> 15 16 17 <div class="form-group"> 18 <%= f.label :name, '農作物の名前' %> 19 <%= f.text_field :name, class: "form-control", :placeholder => "ル・レクチェ 4kg 1900円"%> 20 <span id="help8" class="form-text text-muted"> 21 農作物の名前を入力してください 22 </span> 23 </div> 24 25 <div class="form-group"> 26 <%= f.label :money, '農作物の価格' %> 27 <%= f.text_field :money, class: "form-control", :placeholder => "ル・レクチェ 4kg 1900円"%> 28 <span id="help8" class="form-text text-muted"> 29 農作物の希望買取価格を入力してください 30 </span> 31 </div> 32 33 <div class="form-group"> 34 <%= f.label :weight, '農作物の重さ' %> 35 <%= f.text_field :weight, class: "form-control", :placeholder => "ル・レクチェ 4kg 1900円"%> 36 <span id="help8" class="form-text text-muted"> 37 農作物の販売したい重さ(kg)を入力してください。 38 </span> 39 </div> 40 41 42 <div class="form-group"> 43 <%= f.label :body, '果物の説明' %> 44 <%= f.text_field :body,class:"form-control", :placeholder => "小玉のため、出荷できず、規格外品となっておりますが、味は正規品と変わらないです。コンポートなどのお菓子作りにいかがでしょうか。"%> 45 <span id="help8" class="form-text text-muted"> 46 規格外品になってしまった理由などをお書きください 47 </span> 48 </div> 49 50 <div class="field"> 51 <%= f.label :address %> 52 <%= f.text_field :address %> 53 </div> 54 55 <div class="form-group"> 56 <%= f.label :tag_list %> 57 <%= text_field_tag 'tweet[tag_list]', @tweet.tag_list.join(','), class: "form-control" %> 58 </div> 59 60 <div class="form-group"> 61 <%= f.label :url, 'URL' %> 62 <%= f.url_field :url, class:"form-control", :placeholder => "https..."%> 63 <span id="help8" class="form-text text-muted"> 64 その他URLなどあれば記載してください 65 </span> 66 </div> 67 68 <div class="action"> 69 <%= f.submit "送信", class: "btn-gradient-radius" %> 70 </div> 71 <% end %> 72 <a class="link_option", href="/tweets/index">戻る</a> 73 </div> 74 </body>

tweets/_tag_list.html.erb

ruby

1<%= tag_list.each do |tag| %> 2<span class="badge badge-primary mr-1 p-2"> 3<%= tag %> 4</span> 5<% end %>

tweet.rb

ruby

1class Tweet < ApplicationRecord 2 belongs_to :user 3 has_many :comments, :dependent => :destroy 4 has_many :reviews, :dependent => :destroy 5 has_many :likes, :dependent => :destroy 6 has_many :liked_users, through: :likes, source: :user 7 has_many :tweet_images, :dependent => :destroy 8 accepts_nested_attributes_for :tweet_images, allow_destroy: true 9 geocoded_by :address 10 after_validation :geocode 11 acts_as_taggable 12 acts_as_taggable_on :tag_list 13end

tweets.controller.rb

ruby

1class TweetsController < ApplicationController 2 before_action :authenticate_user!, except: [:index] 3 #全ての投稿を表示する画面 4 def index 5 # Orderで並び替え 6 @tweets = Tweet.all.order("id DESC") 7 if request.post? 8 if params[:search] == nil 9 @tweets = Tweet.all 10 elsif params[:search] == "" 11 @tweets = Tweet.all 12 else 13 #部分検索 14 @tweets = Tweet.where("address LIKE ? ",'%' + params[:search] + '%').or(Tweet.where("title LIKE ? ", "%" + params[:search] + "%")) 15 end 16 end 17 #タグ絞り込み 18 # if params[:tag_name] 19 # @tweets = @tweets.tagged_with("#{params[:tag_name]}") 20 # end 21 end 22 23 def new 24 @tweet = Tweet.new 25 3.times{@tweet.tweet_images.build} 26 # @tweet.tweets_categories.build 27 28 end 29 30 #新しいTweetの保存 31 def create 32 @tweet = Tweet.new(tweet_params) 33 #現在ログインしているUserのidをTweetのuser_idという部分にセット 34 @tweet.user_id = current_user.id 35 #新しいTweetの保存に成功した場合 36 if @tweet.save 37 #index.html.erbにページが移る 38 redirect_to action: "index" 39 #新しいTweetsの保存に失敗した場合 40 else 41 #もう一回投稿画面へ 42 redirect_to action: "new" 43 end 44 end 45 #投稿の詳細表示 46 def show 47 @tweet = Tweet.find(params[:id]) 48 @like = Like.new 49 @comments = @tweet.comments 50 @comment = Comment.new 51 @reviews = @tweet.reviews 52 @review = Review.new 53 @tweet_images = @tweet.tweet_images 54 @tweet_image = TweetImage.new 55 end 56 #投稿の編集 57 def edit 58 @tweet = Tweet.find(params[:id]) 59 end 60 #投稿の削除 61 def destroy 62 Tweet.find(params[:id]).destroy 63 redirect_to action: :index 64 end 65 66 #アップデート 67 def update 68 @tweet = Tweet.find(params[:id]) 69 if @tweet.update(tweet_params) 70 redirect_to :action => "show", :id => @tweet.id 71 else 72 redirect_to :action => "new" 73 end 74 end 75 76 private 77 #セキュリティのため、許可した:bodyというデータだけ取ってくるようにする 78 def tweet_params 79 params.require(:tweet).permit(:body, :name, :money, :weight, :url, :address, :latitude, :longitude, :tag_list, tweet_images_attributes: [:image]) 80 end 81end

試したこと

以下のサイトを参考にし、modelなどを変えてみました。
リンク
リンク

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

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

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

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

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

guest

回答1

0

ベストアンサー

tweets/index.html.erb<td><%= render 'tweets/tag_list', tag_list: tweet.tag_list %></td> 部分ですね????

tweet を用意していないのに使っているのでエラーが出てしまっています。
<% @tweets.each do |t| %> の部分で each でloopしているので

<td><%= render 'tweets/tag_list', tag_list: t.tag_list %></td>

ではないですかね?

投稿2019/06/27 00:46

t_kusakabe74

総合スコア549

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

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

KayoFujii

2019/06/27 02:01

直りました!初歩的なミスですみません。ありがとうございました!!
t_kusakabe74

2019/06/27 04:51

よかったです!!! がんばってください!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問