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

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

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

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

Q&A

解決済

1回答

277閲覧

記事を投稿された時、ビューに表示されているテキストを消したい。

toshiran

総合スコア9

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/14 13:24

前提・実現したいこと

railsでメモアプリとなるものを作成しています。
メモを作成して、投稿したら、作成したメモが表示されます。

メモが投稿された時、「まだ何も投稿されていません」テキストの表示を消したい内容となります。

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

ビューには何も投稿されていない状態で、「まだ何も投稿されていません」とテキスト表示しています。
今の段階ではメモを作成して投稿した時、ビューには先ほど作成したメモと、「まだ何も投稿されていません」が表示されます。

該当のソースコード

rails

1<h3>自分のメモ一覧</h3> 2<div class="contents"> 3<%if @memos%> 4 <h2>まだ投稿されていません。 5 <% @memos.each do |memo| %> 6 <%= link_to memo.title, memo_path(memo.id), class: "contents__postd" %> 7 8 <% end %> 9<%else%> 10<%end%> 11</div> 12</div>

rails

1class MemosController < ApplicationController 2 3 before_action :move_to_index, except: [:index, :show, :search] 4 5 def index 6 @memos = Memo.all 7 end 8 9 def new 10 @memo = Memo.new 11 12 13 end 14 15 def edit 16 @memo = Memo.find(params[:id]) 17 end 18 19 def update 20 @memo = Memo.find(params[:id]) 21 @memo.update(memo_params) 22 if @memo.save 23 24 redirect_to "/users/#{current_user.id}", notice: '編集しました!' 25 else 26 flash.now[:notice] = '編集に失敗しました.....' 27 render :new 28 end 29 end 30 31 def destroy 32 memo = Memo.find(params[:id]) 33 memo.destroy 34 redirect_to "/users/#{current_user.id}",notice: '削除しました!' 35 end 36 37 def create 38 @memo = Memo.create(title: memo_params[:title],url: memo_params[:url], text: memo_params[:text], user_id: current_user.id) 39 if @memo.save 40 redirect_to "/users/#{current_user.id}", notice: '投稿に成功しました!' 41 else 42 flash.now[:notice] = '投稿に失敗しました.....' 43 render :new 44 end 45 end 46 47 def show 48 @memo = Memo.find(params[:id]) 49 end 50 51 def search 52 @memos = Memo.search(params[:keyword]) 53 respond_to do |format| 54 format.html 55 format.json 56 end 57 end 58 59 60 private 61 def memo_params 62 params.require(:memo).permit(:title, :text, :url).merge(user_id: current_user.id) 63 64 end 65 66 def move_to_index 67 redirect_to action: :index unless user_signed_in? 68 end 69end

試したこと

if else文を使って、コードを記述するのではと考えています。
「メモが投稿された時、テキストを非表示にする」
ネットで検索しても、ヒントになりそうなものが見つからず、ご教示いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

このような形だといかがでしょうか...! elseの場所だけが問題だったのだと思います。

<%if @memos %> <%# メモがあれば %> <% @memos.each do |memo| %> <%= link_to memo.title, memo_path(memo), class: "contents__postd" %> <% end %> <%else%> <%# メモがなければ %> <h2>まだ投稿されていません。 <%end%>

投稿2020/05/14 13:29

hatsu

総合スコア1809

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

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

toshiran

2020/05/15 01:55

ご回答いただき、ありがとうございます。 elseの場所を変えてみて上記のようにコードを書いたのですが、 ビューには、まだ何も投稿されていないのに 「まだ投稿されていません」のテキストが表示されなくなりました。 おそらく、原因はこのコードでしょうか。。 <%if @memos%>
hatsu

2020/05/15 02:03

おそらくそうですね。<% if @memos.present %> だといかがでしょうか?
toshiran

2020/05/15 03:47

<% if @memos.present? %>で、 解決する事が出来ました!! ありがとうございます。 似たようなメソッドもあったので、勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問