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

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

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

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

Ruby on Rails

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

受付中

【Rails】コメントを投稿別に振り分ける方法

wakaba00
wakaba00

総合スコア13

Ruby on Rails 5

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

Ruby on Rails

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

1回答

0リアクション

0クリップ

299閲覧

投稿2018/02/24 08:52

コメント機能を実装したいと思っています。
各投稿欄にコメントフォームを設置し、そこからコメントすることで該当する投稿にコメントがされるというものです。

例)
投稿1
コメント投稿数 (0)
[コメントフォーム]


投稿2
コメント投稿数 (1)
[コメントフォーム] ←このフォームで送信することで、投稿2にコメントするようなシステム


投稿3
コメント投稿数 (0)
[コメントフォーム]

投稿(Twiモデル)との関連付けがうまくいかず悩んでいます。
(具体的には、外部キーのtwi_idをどのように格納すれば良いか分かりません・・・)

解決策、改善案お持ちの方、ご助力をお願いいたします。
各コード情報は以下となります。

モデルのアソシエーション

User.rb has_many :twis belongs_to :comment Twi.rb has_many :comments belongs_to :user Comment.rb belongs_to :user belongs_to :twi

投稿一覧ページ(Twis/index)

<% @twis.each do |t| %> <%= t.user.name %> <%= t.msg %> <%= t.comment.count %> <%= render 'comments/form', comment: @comment, id:t.id %> <% end %>

TwiController (indexアクション)

def index users = User.where 'account_id == ?', current_account.id if users[0] == nil then user = User.new user.account_id = current_account.id user.save users = User.where 'account_id == ?', current_account.id end @user = users[0] @twis = Twi.page(params[:page]).order(created_at: :desc) @comment = Comment.new @comment.user_id = @user.id end

CommentController

def new users = User.where 'account_id == ?', current_account.id if users[0] == nil then user = User.new user.account_id = current_account.id user.save users = User.where 'account_id == ?', current_account.id end @user = users[0] @comment = Comment.new @comment.user_id = @user.id end def create @comment = Comment.new(comment_params) respond_to do |format| if @comment.save format.html { redirect_to '/twis', notice: 'Comment was successfully created.' } format.json { render :show, status: :created, location: @comment } else format.html { render :new } format.json { render json: @comment.errors, status: :unprocessable_entity } end end end def comment_params params.require(:comment).permit(:body, :twi_id, :user_id) end

投稿フォーム(comments/_form.html.erb)

<%= form_with(model: comment, local: true) do |form| %> <% if comment.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(comment.errors.count, "error") %> prohibited this comment from being saved:</h2> <ul> <% comment.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.text_area :body, id: :comment_body %> <%= form.submit '送信' %> <%= form.hidden_field :twi_id, id: :comment_twi_id %> <%= form.hidden_field :user_id, id: :comment_user_id %> </div> <% end %>

投稿一覧ページ(Twis/index)の変数tをフォームと関連付けられれば早いと思うのですが・・・

何卒よろしくお願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

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

Ruby on Rails

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