間抜けな質問で申し訳ありません、一週間ほど色々と試行錯誤をしてみましたが、うまくできないため質問しました。
よくあるコメント機能を作りたいのですが、comments/new.html.erbで入力したものとtext/new.html.erbで入力したものをusers/index.html.erbに以下のように(A1)表示したいのですが、コードが悪いせいかうまく表示できません。
(A1)
comments/new.html.erbとtexts/new.html.erb両方にform_forで入力画面を作り
そこに文字を入力して、users/index.html.erbページに
comment.title
comment.body
text.title 1
text.body 1
...
text.title n個目
text.body n個目
という固まりとして入力した分だけ表示させたいです。
情報
Rails 5.1.7
VScode
model
:comment (title:string body:text)
:text (title:string body:text)
:devise users
views
:comments (index show new edit)
:text (index show new edit)
:users (index show edit)
tecxtcontroller
1class TextsController < ApplicationController 2 def index 3 @texts = Text.all 4 end 5 6 def show 7 @text = Text.find(params[:id]) 8 end 9 10 def new 11 @text = Text.new 12 end 13 14 def create 15 @text = Text.new(text_params) 16 @text.user_id = current_user.id 17 @text.save 18 redirect_to texts_path 19 end 20 21 def edit 22 @text = Text.find(params[:id]) 23 end 24 25 def update 26 @text = Text.find(params[:id]) 27 @text.update(text_params) 28 redirect_to text_path(@text) 29 end 30 31 def destroy 32 text = Text.find(params[:id]) 33 text.destroy 34 redirect_to texts_path 35 end 36 37 private 38 def text_params 39 params.require(:text).permit(:title, :body) 40 end 41end
commentscontroller
1class CommentsController < ApplicationController 2 def index 3 @comments = Comment.all 4 @texts = Text.all 5 end 6 7 def show 8 @comment = Comment.find(params[:id]) 9 end 10 11 def new 12 @comment = Comment.new 13 end 14 15 def create 16 @comment = Comment.new(comment_params) 17 @comment.user_id = current_user.id 18 @comment.save 19 redirect_to comments_path 20 end 21 22 def edit 23 @comment = Comment.find(params[:id]) 24 end 25 26 def update 27 @comment = Comment.find(params[:id]) 28 @comment.update(rblog_params) 29 redirect_to comment_path(@comment) 30 end 31 32 def destroy 33 comment = Comment.find(params[:id]) 34 comment.destroy 35 redirect_to comments_path 36 end 37 38 private 39 def comment_params 40 params.require(:comment).permit(:title, :body) 41 end 42end
userscontroller
1class UsersController < ApplicationController 2 def index 3 @users = User.all 4 @comments = Comment.all 5 @texts = Text.all 6 end 7 8 def show 9 @user = User.find(params[:id]) 10 end 11 12 def edit 13 @user = User.find(params[:id]) 14 end 15 16 def update 17 @user = User.find(params[:id]) 18 @user.update(user_params) 19 redirect_to user_path(@user) 20 end 21 22 private 23 def user_params 24 params.require(:user).permit(:username, :email, :profile) 25 end 26end 27
やったこと
このcomments/new.html.erbで入力したものと
rails
1comments/new.html.erb 2 3<%= form_for @comment do |f| %> 4 <p>title</p> 5 <%= f.text_field :title %> 6 <p>body</p> 7 <%= f.text_area :body %> 8 9 <%= f.submit "登録"%> 10<% end %> 11 12<script> 13$("textarea").val(""); 14 15</script>
同じように、texts/new.html.erbで入力したものを
rails
1texts/new.html.erb 2 3<%= form_for @text do |f| %> 4 <p>タイトル</p> 5 <%= f.text_field :title %> 6 <p>body</p> 7 <%= f.text_area :body %> 8 <%= f.submit "登録" %> 9<% end %> 10 11<script> 12$("textarea").val(""); 13</script>
↓users/index.html.erbとかくと
rails
1users/index.html.erb 2 3 <% @comments.each do |comment| %> 4 <div> 5 <%= comment.title %> 6 </div> 7 <div> 8 <%= comment.body %> 9 </div> 10 <% end %> 11 12 <% @texts.each do |text| %> 13 <div> 14 <%= text.title %> 15 </div> 16 <div> 17 <%= text.body%> 18 </div> 19 <% end %>
comment.title
comment.body
text.title
text.body
というふうに分かれてしまいます。
行ったこと
users/index.html.erbのcomments.each do |comment|の中に
textsのeach文を書きましたが
rails
1users/index.html.er 2 3<% @comments.each do |comment| %> 4 <div> 5 <div> 6 <%= comment.title %> 7 </div> 8 <div> 9 <%= comment.body %> 10 </div> 11 </div> 12 13 <% @texts.each do |text| %> 14 <div> 15 <div> 16 <%= text.title %> 17 </div> 18 <div> 19 <%= text.body%> 20 </div> 21 </div> 22 <% end %> 23<% end %> 24
これで表示させると、何個もtext.titleとtext.bodyが重複してしまいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/08/01 07:25
2021/08/01 20:31
退会済みユーザー
2021/08/02 02:08
2021/08/02 02:55
退会済みユーザー
2021/08/02 04:26
2021/08/02 05:29
2021/08/02 05:32
退会済みユーザー
2021/08/02 07:07
2021/08/02 07:29