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

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

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

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

1426閲覧

rails formからの値がDBに書き込まれません

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/02/25 01:47

編集2022/01/12 10:55

こんにちは。
Ruby on railsで一つの記事に対して複数の画像付きコメントを載せられる掲示板形式のアプリケーションを作りたいと考えています。
(想定は、お店の記事に対して口コミが書き込める、といった形です。)
http://qiita.com/htk_jp/items/3dd3dd36ebaf860ffd8c
上記のページを参考にほとんどそのままコードを書いて実行しています。エラーは出ないのですが、formに値を入力して送信してもDBに反映されません。DBに直接値を入れてみたところ、一覧表示はできたので取り出すことはできているようです。
controllerに問題があるのかなと思ったのですが、自分で見てみてもどこがダメなのか分からなかったため質問させていただきます。

route.rb

ruby

1Rails.application.routes.draw do 2 resources :shops do 3 resources :posts 4 end 5 root to: 'shops#index' 6end

shop.rb(参考ページでarticle.rbにあたる)

ruby

1class Shop < ActiveRecord::Base 2 belongs_to :user 3 has_many :posts, dependent: :destroy 4 validates :name, presence: true, length: { minimum: 5 } 5end 6

shops/show.html.erb

ruby

1 2<p> 3 <h1><%= @shop.name %></h1> 4</p> 5 6<p> 7 <strong>Address:</strong> 8 <%= @shop.address %> 9</p> 10 11<p> 12 <strong>Phone:</strong> 13 <%= @shop.phone %> 14</p> 15 16<p> 17 <strong>Web page:</strong> 18 <%= @shop.web_page %> 19</p> 20 21<hr> 22 23<h2>Comments</h2> 24<%= render @shop.posts %> 25 26<hr> 27 28<h2>Add a comment:</h2> 29<%= form_for([@shop, @shop.posts.build]) do |f| %> 30<div class="field"> 31<%= f.label :title %><br> 32<%= f.text_field :title %> 33</div> 34<div class="field"> 35<%= f.label :pict %><br> 36<%= f.file_field :pict %> 37</div> 38<div class="field"> 39<%= f.label :body %><br> 40<%= f.text_area :body %> 41</div> 42<p> 43<%= f.submit %> 44</p> 45<% end %> 46 47<%= link_to 'Edit', edit_shop_path(@shop) %> | 48<%= link_to 'Back', shops_path %>

controllers/posts_controller.rb(参考ページでのcomments_controller.rbにあたる)

ruby

1class PostsController < ApplicationController 2 3 def create 4 @shop = Shop.find(params[:shop_id]) 5 @post = @shop.posts.create(post_params) 6 redirect_to shop_path(@shop) 7 end 8 9 def destroy 10 @shop = Shop.find(params[:shop_id]) 11 @post = @shop.posts.find(params[:id]) 12 @post.destroy 13 14 redirect_to shop_path(@shop) 15 end 16 17 private 18 def post_params 19 params.require(:post).permit(:title, :pict, :body, :user_id) 20 end 21end

logを見てみると、
Log画面
となっていて、値は渡された後にinsert文が実行されずに終わってしまっています。

コードとlogで見づらくなってしまいましたが、何かご意見いただけると幸いです。

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

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

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

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

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

guest

回答1

0

原因は分かりませんが、もう一度postと同じモデルを作り直したらうまいことできるようになりました。

投稿2016/02/25 10:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問