27301


Railsで簡単なメモ登録アプリを作成中ですが、Viewから新規作成し送信したレコードの中身がテーブルに記録されません。（空のレコードは作成されます）

Viewフォームがおかしいのか、Controllerの記述が悪いのか、分からない状況です。

ごく基本的な質問なので恐縮ですが、何卒よろしくお願いいたします。  
Rails初心者です。

バージョン  
Rails 4.2  
Ruby 2.1  
Gem 2.2

テーブル設計

[code]

    create_table :tips do |t|
          t.string  :title
          t.text    :link
          t.text    :text
          t.integer :user_id
          t.string  :category
          t.timestamps
    
[/code]

コントローラー

[code]

    class TipsController < ApplicationController
      def create
        Tip.create(title: tip_params[:title], link: tip_params[:link], text: tip_params[:text], category: tip_params[:category], user_id: current_user.id)
      end
    
      private
    
      def tip_params
        params.permit(:title, :link, :text, :category)
      end
    end
    
[/code]

ビューの入力フォーム

[code]

    <%= form_for @tip do |f| %>
    <div >
    <%= f.label :title, "TIPタイトル" %>
    <%= f.text_field :title %>
    </div>
    
    <div >
    <%= f.label :link, "関連するリンクのアドレス" %>
    <%= f.text_field :link %>
    </div>
    
    <div >
    <%= f.label :text, "内容を記入しましょう" %>
    <%= f.text_field :text %>
    </div>
    
    <div >
    <%= f.label :category, "ジャンルを入力" %>
    <%= f.text_field :category %>
    </div>
    
    <div >
    <%= f.submit "投稿して共有する" %>
    </div>
    <% end %>
    
[/code]


CC BY-SA 3.0
2016-07-03T10:27:09.913
27295
2016-07-03T12:26:32.307
2016-07-03T12:16:54.647
76
17035
question
ruby-on-rails
Railsでform_for送信したパラメータがtableに記録されない


その View から POST された場合、`params` は以下のような構造になっているはずです。(ログ中の `Started POST "/tips"
for ...` の直後に `Parameters: { ... }` として表示されています。)

[code]

    {"tip" => {"title" => "...", "link" => "...", "text" => "...", "category" => "test"}, ...}
    
[/code]

このため、`tip_params` は以下のように定義する必要があります。

[code]

    def tip_params
      params.require(:tip).permit(:title, :link, :text, :category)
    end
    
[/code]

まずは Rails の機能でひな形を作成して、それを修正していくのが良いでしょう。

[code]

    (例)
    rails g scaffold Tip title:string link:text text:text user_id:integer category:string
    
[/code]


CC BY-SA 3.0
2016-07-03T12:26:32.307
27301
2016-07-03T12:26:32.307
76
27295
answer