teratail header banner
teratail header banner
質問するログイン新規登録
Ruby on Rails

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

Q&A

解決済

1回答

415閲覧

コンテンツの作成ページとコンテンツ表示ページを混在させたい

suguru0717

総合スコア24

Ruby on Rails

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

0グッド

0クリップ

投稿2018/10/15 09:11

編集2018/10/15 11:20

0

0

わからないこと

コンテンツの作成ページとコンテンツ表示ページを一緒のページにしたいのですが方法がわかりません。

content一覧ページから特定の(content/:id)などのページを開きその画面でコンテンツに紐づいたmessageを作成し同じページに表示したいです。
その際のcontrollerの記述方法なのですが下記 記述です。

controller

class MessagesController < ApplicationController
before_action :logged_in_user, only: [:show, :create]

def show
@message = Message.new
@content = Content.find(params[:id])
end

def create
content = Content.find_by(params[:id])
@message = content.messages.build(message_params)
if @message.save
redirect_to "/messages/show"
else
render "/contents/show"
end
end

private

def message_params
params.require(:message).permit(:talk)
end
end

view

<div class="row"> <div class="col-md-4 col-md-offset-4"> <%= form_for(@message) do |f| %>
<%= f.label :喋ってみよう %> <%= f.text_area :talk, class: 'form-control'%> <%= f.submit "送信", class: "btn btn-success btn-sm" %> <% end %> </div>
</div>

この下にcontent.messagesを出力したい

@message.each do |msg|
....
....
end

上記のようにしたいのですがcontrollerでのデータの取得ができないです。(記述方法が分からない)
もしお分かりになる方がいれば、実装可能なのかともしわかれば記述方法も教えていただきたいです。

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

ajaxを利用してcontent.messagesを出力したい部分を差し替えるのはどうでしょうか。

投稿2018/10/16 04:46

altb

総合スコア104

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

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

suguru0717

2018/10/17 03:11

ご回答ありがとうございます。 試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問