🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

503閲覧

htmlでif作成しているとき、elseでエラーになるのを解決したい。

ma_k

総合スコア33

Ruby

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/03/15 09:41

ruby on rails で投稿機能を作成してます。

HTMLに投稿した内容を表示したいです。
投稿を新規作成し、作成した内容を表示するページがエラーになります。

投稿した内容はそのまま表示するのではなく、別のテーブルから条件に合わせて内容を選択しています。

投稿した内容がある条件に該当しない場合、作成できませんと表示したいのですが、
エラーになってしまい困っています。
create.htmlは

html

1 2<% @linkname.each do |f| %> 3 <% if @linktags.from_id == f.link_id %> 4 <h6><a href="/<%= f.link_to %>#<%= f.link_id %>" class="linkli"> 5 <%= f.link_to_name %><%= f.linkname %></a></h6> 6 <% else @linktags.from_id == nil %> 7 作成できません 8 <% end %> 9 <% end %>

controller.rbは

ruby

1def create 2 @linktag=Linktag.new(from_id: params[:from_id],linkname: params[:linkname],link_to: params[:link_to],link_to_id: params[:link_to_id]) 3 @linktag.save 4 @linktags = Linktag.find_by(from_id: params[:from_id],linkname: params[:linkname],link_to: params[:link_to],link_to_id: params[:link_to_id]) 5 @linktags = Linktag.all 6 @linkname=Linkname.all 7 8 end 9 10def new 11 12 13end

です。
<% if @linktags.from_id == f.link_id %>
の条件に当てはまった場合はうまく表示されます。
この条件以外(nil 又は @linktags.from_id == f.link_id に当てはまらない時)は、作成できませんと表示したいです。

どなたかご教授いただけないでしょうか。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

else は 単に else しか書けません。
if でない場合に、さらに何らかの条件をつけるなら
<% elsif @linktags.from_id == nil %>

投稿2021/03/15 09:46

winterboum

総合スコア23567

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

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

ma_k

2021/03/16 14:08

コメントが遅くなり申し訳ありません。 <% elsif @linktags.from_id == nil %>と<% else %>の両方で試してみたのですが、 NoMethodError in Linktag#create undefined method `from_id' for #<Linktag::ActiveRecord_Relation:0x00007fbd3b43f6e8> Did you mean? from になってしまいました。
winterboum

2021/03/16 21:15

if @linktags.from_id == f.link_id は通り elsif @linktags.from_id == nil では だめですか? それはおかしいですね、その時のcodeを載せてください、なにかが違ってるはず
ma_k

2021/03/17 01:56

def create @linktag=Linktag.new(from_id: params[:from_id],linkname: params[:linkname],link_to: params[:link_to],link_to_id: params[:link_to_id]) @linktag.save @linktags = Linktag.find_by(from_id: params[:from_id],linkname: params[:linkname],link_to: params[:link_to],link_to_id: params[:link_to_id]) @linkname=Linkname.all end <% @linkname.each do |f| %> <% if @linktags.from_id == f.link_id %> <h6><a href="/<%= f.link_to %>#<%= f.link_id %>" class="linkli"> <%= f.link_to_name %><%= f.linkname %></a></h6> <% elsif @linktags.from_id == nil %> 存在しません。 <% end %> <% end %> で、 <% if @linktags.from_id == f.link_id %>のきうまく行きますが、 <% elsif @linktags.from_id == nil %>のとき何も表示されず。 <% elsif @linktags.from_id == nil %>を<% else %>にすると、 <% if @linktags.from_id == f.link_id %>も、<% else %>の時も、存在しません。が無限に表示されてしまいます。
winterboum

2021/03/17 02:55

まず 「<% else %>にすると」はしないでください。それは文法がちがいます。 で、 何も表示されないとすると、@linktags.from_id が  f.link_id でも nilでもないと言うことです。 存在しません。 <% end %> のところを 存在しません。 <% else %> @linktags.from_id is <%= @linktags.from_id %> <% end %> にしてみて
ma_k

2021/03/18 04:53

<% @linkname.each do |f| %> <% if @linktags.from_id == f.link_id %> <h6><a href="/<%= f.link_to %>#<%= f.link_id %>" class="linkli"> <%= f.link_to_name %><%= f.linkname %></a></h6> <% elsif @linktags.from_id == nil %> 存在しません。 <% else %> @linktags.from_id is <%= @linktags.from_id %> <% end %> <% end %> で試して見ると、@linktags.from_id is 選択してください @linktags.from_id is 選択してください @linktags.from_id is 選択してくださいが無限に流れてしまいます。
winterboum

2021/03/18 06:37

無限では無いでしょう、<% @linkname.each do |f| %> ですから@linknameの数だけです。 選択してください  が意味不明です。 viewを全部のせてください
ma_k

2021/03/18 08:31

すみません。@linknameのテーブルが多く無限と勘違いしておりました。 createのviewの内容はこちらです。 上部でエラーが出て,そこの部分の解決に質問しておりました。 <div class="a-header"></div> <div class="main"> <div class="link_menu"> <div class="container"> <div class="link-contents"> <div class="succes"> <% @linkname.each do |f| %> <% if @linktags.from_id == f.link_id %> <h6><a href="/<%= f.link_to %>#<%= f.link_id %>" class="linkli"> <%= f.link_to_name %> <%= f.linkname %></a></h6> <% elsif @linktags.from_id == nil %> 存在しません。 <% else %> @linktags.from_id is <%= @linktags.from_id %> <% end %> <% end %> <p class="create-t">から</p> <h6><a href="/<%= @linktags.link_to %>#<%= @linktags.link_to_id %>" class="linkli"> <% @linkname.each do |f| %> <% if @linktags.link_to_id == f.link_id %> <%= f.link_to_name %> <%= f.linkname %> <% end %> <% end %> </a></h6> <p class="create-t">へ作成しました!</p> <p class="create-t"> 完了です!!! </p> <div class="btn_cont"> <p class="btn" href="/">トップへ戻る</p> </div> </div> </div> </div> </div> </div> newのviewは <div class="cp_ipselect"> <option value="" hidden disabled selected></option> <select name="from" class="cp_sl06"> <option value="0">選択してください</option> <option value="K1">K1</option> <option value="R1">R1</option> <option value="KK1">KK1</option> </select> <span class="cp_sl06_highlight"></span> <span class="cp_sl06_selectbar"></span> <label class="cp_sl06_selectlabel">インデックス元</label> </div> <div class="cp_ipselect"> <option value="" hidden disabled selected></option> <select name="from_id" class="cp_sl06" id="from_id"> <option data-sel="0" value="0">選択してください</option> <option data-sel="K1" value="0">選択してください</option> <option data-sel="K1" value="A001">○1-</option> <option data-sel="K1" value="A002">○2-</option> <option data-sel="K1" value="A002_1">○2-1-一-</option> <option data-sel="K1" value="A002_2">○2-1-二-</option> <option data-sel="K1" value="A002_3">○2-1-三-</option> <option data-sel="K1" value="A002_4">○2-1-四-</option> <option data-sel="K1" value="A002_5">○2-1-五-</option> <option data-sel="R1" value="0">選択してください</option> <option data-sel="R1" value="R001">○1-</option> <option data-sel="R1" value="R001_1">○1- 1-一-</option> <option data-sel="R1" value="R001_2">○1- 1-二-</option> <option data-sel="R1" value="R001_3">○1- 1-三-</option> <option data-sel="R1" value="R001_4">○1- 1-四-</option> <option data-sel="R1" value="R001_5">○1- 1-五-</option> <option data-sel="R1" value="R001_6">○1- 1-六-</option> <option data-sel="KK1" value="0">選択してください</option> <option data-sel="KK1" value="K001">○1-</option> <option data-sel="KK1" value="K00102">○1- 2-</option> <option data-sel="KK1" value="K00102">○1-の2</option> <option data-sel="KK1" value="K00102_1">○1-の2 1-一-</option> <option data-sel="KK1" value="K00102_2">○1-の2 1-二-</option> <option data-sel="KK1" value="K00102_3">○1-の2 1-三-</option> </select> </div> です(内容が多いためコードをコメント用に削っています.)この中に出てくる 。選択してくださいが表示されていると思います。
winterboum

2021/03/18 09:11

無限に反応してしまい横道にそれました。 「@linktags.from_id is 」が表示されたということは @linktags.from_id == f.link_id でも @linktags.from_id == nil でも無いということです。 「@linktags.from_id is 選択してください」となり間になにもないということは、 @linktags.from_id が '""(空文字列)か、falseだということです。 ということは <% elsif @linktags.from_id.blank? %> とすれば 質問の趣旨「elseでエラーになるのを解決したい。」は解決です。 無限に続くのは無限ではなかったということはわかっていただけたようですし
ma_k

2021/03/21 09:31

遅くなりすみません!!! 返信ありがとうございます!!! <% elsif @linktags.from_id.blank? %>で修正してみます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問