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

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

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

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

Q&A

解決済

2回答

744閲覧

indexの画面に表示、編集、削除のリンク(view)が表示されない。

-maeji-

総合スコア39

Ruby on Rails

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

0グッド

0クリップ

投稿2019/01/07 10:14

編集2019/01/07 11:02

RailsでCRUD処理を実行できる簡単なアプリケーションを作って練習中です。
書籍登録のアプリです。

indexの画面に表示、編集、削除のリンクが表示されません。
つい先ほどまでは表示されていて、機能もしていました。

その間の作業は、画面表示の並びがかっこ悪かったので、indexのHTMLをいじっていました。
それとすでに保存された書籍を削除しました。(みやすくしたかったので一旦消した)

なぜかわからなかったのでサーバーを解いて、再び開くなどしたり試しました。
どこか誤まって触れてしまったかもしれませんが、検討がつかないので、一緒にみてもらえないでしょうか。
以下が編集した内容です。よろしくお願いいたします。
:追記
edit.html.erbの<%= form_for(@book) do |f| %>は、<%= form_for :book, url: books_path(@book),method: :patch do |f| %>から変更したものです。ここに原因がありますでしょうか

###index.html.erb

<h1>書籍一覧</h1> <%= link_to '新しい書籍を登録',new_book_path %> <table> <tr> <th>タイトル</th> <th>テキスト</th> <th colspan="3"></th> </tr> <% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.text %></td> <td><%= link_to '表示',book_path(book) %></td> <td><%= link_to '編集',edit_book_path(book) %></td> <td><%= link_to '削除',book_path(book), method: :delete, data: {confirm: '本当に削除してもいいですか?'} %> </td> </tr> <% end %> </table>

###books_controller.rb

class BooksController < ApplicationController#to do index アクションを作る def index @books = Book.all end def show @book = Book.find(params[:id]) end def new @book = Book.new end def edit @book = Book.find(params[:id]) end def create @book = Book.new(book_params) if @book.save redirect_to @book else render :new end end def update @book = Book.find(params[:id]) if @book.update(book_params) redirect_to @book else render :edit end end def destroy @book = Book.find(params[:id]) @book.destroy! redirect_to books_path end private def book_params params.require(:book).permit(:title, :text) end end

###new.html.erb

<h1>新しい書籍</h1> <%= form_for :book, url: books_path do |f| %> <p> <%= f.label :title %> <%= f.text_field :title %> </p> <p> <%= f.label :text %> <%= f.text_area :text %> </p> <p> <%= f.submit %> </p> <% end %> <%= link_to '戻る',books_path %>

###edit.html.erb

<h1>書籍を編集する</h1> <%= form_for(@book) do |f| %> <p> <%= f.label :title %> <%= f.text_field :title %> </p> <p> <%= f.label :text %> <%= f.text_area :text %> </p> <p> <%= f.submit %> </p> <% end %> <%= link_to '戻る',books_path %>

##book.rb

class Book < ApplicationRecord validates :title, presence: true,length: {minimum: 5} end

現在の状態
イメージ説明

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

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

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

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

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

dice142

2019/01/07 10:24

「新しい書籍を登録」で登録しても一覧に表示されないということですか?
-maeji-

2019/01/07 10:33

回答ありがとうございます。 はい。新しい書籍を登録、のリンク先でsaveしても一覧に表示されずに、画面の処理が実行されなくなってしまいましたし、create自体も出来なくて。 indexの画面に、link_to〜が表記されなくなってしまいました。
guest

回答2

0

自己解決

解決いたしました。
book.rb

class Book < ApplicationRecord validates :title, presence: true,length: {minimum: 5} end

length: {minimum: 5}が原因のようです。

文字を5文字以上入力しないと保存出来ないようにしていました。
保存されたものがあって初めて、linkが出力されるのですね。

すいません。ありがとうございました。

投稿2019/01/07 11:13

-maeji-

総合スコア39

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

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

0

<tb>タグというのは存在しないですね。<td>タグではないでしょうか?

投稿2019/01/07 10:40

daikitakaya

総合スコア229

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

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

-maeji-

2019/01/07 11:01

回答ありがとうございます。 <td>で編集してみたのですが、出力されませんでした。 単に出力されないのは、htmlファイルが間違ってるとみて良いのでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問