###概要
閲覧ありがとうございます。
以下3つのモデルを使った投稿アプリを作っています。
post.rb *belongs_to :user
user.rb *has_many :posts
like.rb *今回は関係ない(はず..)
index.htmlから新規投稿ボタンでnew.htmlに遷移
imageとtextを入力して投稿したらindex.htmlにリダイレクトする作りです。
imageとtextはDBに保存されるのですが、user_idが保存されなくて困っています。( nullにはならなくて空欄になります。 )
###コード
posts_controler
before_action :authenticate_user!, only: [:new, :create, :edit, :update, :destroy] def new @post = Post.new end def create Post.create(create_params) redirect_to :root end **他省略** private def create_params params.require(:post).permit(:image,:text).merge user_id:current_user.id end
new.html.erb
<div class="container"> <div class="new_post"> <%= form_for (@post) do |f| %> <%= f.label :画像 %><br /> <%= f.file_field :image %> <%= f.text_area :text %> <%= f.submit "投稿する", :class=>"btn" %> <% end %> </div> </div>
routes.rb
Rails.application.routes.draw do devise_for :users resources :users, only: [:index, :show] resources :posts do resources :likes, only: [:create, :destroy] end root 'posts#index' end
###試したこと
- 同じ仕様の投稿のみのアプリを作ってみたところ、そちらは問題なく保存できました。
色々と機能を追加していく中で不具合が出ている可能性があるのですが、すべてのコードを貼り付けると質問の意図が伝わりずらいと思い、必要そうな箇所をのっけています。他に必要の情報などありましたらお教えください。
- createメソッドの直後にbinding.pryを入れて、下記二つのparameterは取得できました。
paramsの結果↓
<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"Nr0Jpsp6BVT3wxLnsgPVOBh36QTq4k+km5NoQvmo9nUq7vffIs5LRlwQ0VA2Ki0LjqpzWcZ40oD8k2DbZazJ5g==", "post"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x00007f68d811bd98 @tempfile=#Tempfile:/tmp/RackMultipart20191002-22770-1jfywsr.jpg, @original_filename="cake-802188_960_720.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name="post[image]"; filename="cake-802188_960_720.jpg"\r\nContent-Type: image/jpeg\r\n">, "text"=>"テキスト"}, "commit"=>"投稿する", "controller"=>"posts", "action"=>"create"} permitted: false
current_userの結果↓
<User id: 1, email: "test@gmail.com", nickname: "yuki", created_at: "2019-09-03 07:51:31", updated_at: "2019-09-16 07:40:44">
###その他環境など
- AWS cloud9
- macbook air
- devise
- active storageで投稿機能(amazon s3)
- likeモデルでいいね機能(ajax)
- git
- heroku
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/03 02:27
2019/10/03 04:35
2019/10/03 04:42