部分テンプレートのhtmlに「ユーザー情報(name・introduction)」と「投稿フォーム」を記入し、「books」コントローラーに対応しているindex.html.erbにて使用したいのですが、ユーザー情報(name・introduction)を上手く反映させる方法が分かりません。
(name・introductionはUserモデルのカラムとして登録しています)
現状作成している下記部分テンプレートに対して、どのように記入すればnameとintroductionが反映させることができますでしょうか。(下記templateのhtmlにて該当箇所に矢印を当てています)
ご教示のほど、何卒よろしくお願いいたします。
(説明させていただいた内容にて不明な箇所がございましたら、ご質問頂けますと幸いです)
templatehtml
1<table> 2 <tr> 3 <td><%= book.user.name %></td> 4 </tr> 5 <tr> 6 <td>name</td> 7 <td><%= %></td> 8 ↑こちらです 9 </tr> 10 <tr> 11 <td>introduction</td> 12 <td><%= %></td> 13 ↑こちらです 14 </tr> 15</table> 16 17 18<h1>New book</h1> 19<%= form_with model: book, local: true do |f| %> 20 <h4>Title</h4> 21 <%= f.text_field :title %> 22 <h4>Opinion</h4> 23 <%= f.text_area :body %> 24 <%= f.submit 'Create Book' %> 25<% end %>
indexhtml
1<%= render 'layouts/list', book: Book.new %> 2 3<h1>Books</h1> 4<table> 5 <thead> 6 <tr> 7 <th>Title</th> 8 <th>Opinion</th> 9 </tr> 10 </thead> 11 <tbody> 12 <% @books.each do |book| %> 13 <tr> 14 <td><%= image_tag('sample-author1.jpg') %></td> 15 <td> 16 <%= link_to book_path(book) do %> 17 <%= book.title %> 18 <% end %> 19 </td> 20 <td><%= book.body %></td> 21 </tr> 22 <% end %> 23 </tbody> 24</table> 25
bookscontroller
1class BooksController < ApplicationController 2 3 def index 4 @book = Book.new 5 @books = Book.all 6 end 7 8 def create 9 @book = Book.new(book_params) 10 @book.user_id = current_user.id 11 @book.save 12 redirect_to books_path 13 end 14 15 def show 16 @book = Book.find(params[:id]) 17 end 18 19 def edit 20 @book = Book.find(params[:id]) 21 render :layout => nil 22 end 23 24 def update 25 @book = Book.find(params[:id]) 26 Book.update(book_params) 27 redirect_to book_path(@book) 28 end 29 30 def destroy 31 @book = Book.find(params[:id]) 32 @book.destroy 33 redirect_to books_path 34 end 35 36 private 37 def book_params 38 params.require(:book).permit(:title, :body) 39 end 40end 41
回答1件
あなたの回答
tips
プレビュー