こんにちは。
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を見てみると、
となっていて、値は渡された後にinsert文が実行されずに終わってしまっています。
コードとlogで見づらくなってしまいましたが、何かご意見いただけると幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。