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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

1565閲覧

rails has_many belongs_to 関連付け

m.kata

総合スコア17

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2016/08/09 13:34

編集2016/08/09 13:36

デバイスでUserを作成しています。
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>

<% f.email_field %>
等があります
<% end %>

他に
<%= form_for [@entrepreneur, @entrepreneur. comments.build] do |f| %>
<%= image_tag current_user.image, height:40, width:40 %><br>

<%= f.text_area :body ,size:"60x5" %><br>

<% end %>

<%= form_for @entrepreneur do |f| %>
<br>
<%= f.label :タイトル %><br />
<%= f.text_field :title ,size:"100×30" %><br />
<%= f.label :詳細 %><br />
<%= f.text_area :text ,size:"100×100" %><br />
<%= f.label :画像 %><br />
<%= f.file_field :image ,size:"50×10" %><br />
<%= f.submit :ideain %>
<% end %>

などのフォームがあるのですが

これらを
class User < ActiveRecord::Base
mount_uploader :image, ImageUploader
has_many :entrepreneurs
has_many :comments

devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
コメントアウト Include default devise modules. Others available are:コメントアウト
コメントアウト :confirmable, :lockable, :timeoutable and :omniauthableコメントアウト
end

class Entrepreneur < ActiveRecord::Base
mount_uploader :image, ImageUploader
has_many :comments, dependent: :destroy
belongs_to :user
end

class Comment < ActiveRecord::Base
belongs_to :entrepreneur
belongs_to :user
end

とやっています。

そこでこれらを関連させた上での記事一個一個に
個別のUserが投稿した内容を個人個人で表示したいのですが
現段階では

ログインしたアカウントで
記事を作成し更新した表示になってしまいます
下記はshowページです

<li class="s-comment"> <div class="plofile"> <%= current_user.role %> <div class="user-name">

<%= image_tag current_user.image, height:40, width:40 %>
<% if user_signed_in? %>
<%= current_user.role %>
<%= current_user.name ? current_user.name : current_user.email %>
<% end %>

</div> </div> <%= comment.body %><br> </li>

のような感じです。

どのように記事を更新したUserを個別に分けていく表示をしたらいいか教えていただけたら幸いです!

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

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

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

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

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

guest

回答1

0

ベストアンサー

ちょっとやりたい事がわかりにくいのですが・・・

とりあえず、誰が投稿したかにかかわらず、全投稿を表示したいのだ、と解釈します。
外していたらすみません。

その上で、
1.投稿された記事を更新日時順にして表示
2.投稿された記事を投稿者別に表示
の2パターンが考えられるのですが、どっちなんでしょうか?

1.投稿された記事を更新日時順に表示

Ruby

1# コントローラとアクションの名前はURL設計の問題なので、適切なものを考えてください 2# とりあえずHogeController#fugaとします 3# controller 4 5class HogeController < ApplicationController 6 def fuga 7 @entrepreneurs = Entrepreneur.ordeer('update_at DESC').all 8 end 9end 10 11# view, hoge/fuga.html.erb 12<% @entrepreneurs.each do |ent| %> 13 <%= ent.title %>....他のentrepreneurのコンテンツ表示 14 <%= ent.user.name %>...投稿の著者に関する表示 15 <% ent.comments.each do |com| %> 16 <%= com.content %>...他のコメントの内容表示 17 <%= com.user.name %>...コメント著者の表示 18 <% end %> 19<% end %>

2.投稿された記事を投稿者別に表示

Ruby

1class HogeController < ApplicationController 2 def fuga 3 @users = user.all 4 end 5end 6 7# view, hoge/fuga.html.erb 8<% users.each do |user| %> 9 <%= user.name %>さんの投稿 10 <% user.entrepreneurs.order('update_at DESC').each do |ent| %> 11 <%= ent.title %>....他のentrepreneurのコンテンツ表示 12 <% ent.comments.each do |com| %> 13 <%= com.content %>...他のコメントの内容表示 14 <%= com.user.name %>...コメント著者の表示 15 <% end %> 16 <% end %> 17<% end %>

こんな感じになるのではないかと思います。
わかりやすさ優先で書いているので、このままではN+1問題が発生しますが、
単純にHogeController#fugaで、
オブジェクトを取得する際にincludesオプションを使えばすむ話なので、
今回は割愛しています。

投稿2016/08/19 08:30

rifuch

総合スコア1901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問