2016-11-30 16 views
1

私のテキストフィールドの値はpostgresqlデータベースに掲載されていません。 サンプルという簡単なフォームを作成しました。このコードは、コントローラで 'サンプル' を使用しています。値をデータベースからフォームに保存

def sample 
    title = params[:title] 
    sample=Sample.new(title) 
    sample.save() 
end` 

私はまた、ビューでsample.haml作成:

sample.haml

= form_for :sample, url: sample_path do |f| 
    %p 
    = f.label :title 
    %br/ 
    = f.text_field :title 

    %p 
    = f.submit 

をそして私は20161129160810_create_sampleという名前の移行ファイルを作成しました

class CreateSample < ActiveRecord::Migration 
    def change 
    create_table :samples do |t| 
     t.string :title 
     t.timestamps 
     end 
     end 

私たちが ' title 'の値を入力し、submitボタンをクリックすると、' id 'の値は' sample 'テーブルに保存されますが、' title 'の値は空のテーブルに表示されます。どうすれば解決できますか?

答えて

1

してみてください。この

sample=Sample.new(title: params[:sample][:title]) 
+0

にそれが動作していない、のフォームタグのいずれかのエラーがあります? –

+0

ああ、 'f.text_field'を使うのが分かります。 – Fallenhero

+0

私の回答が更新されましたか、@ sa77の回答が – Fallenhero

1

使用form_tag(form_tagは単なるHTMLフォームタグを生成)の代わりに、form_for

ビューファイル(のform_forがあなたのレールのアプリでリソースに関連付けられたHTMLフォームを生成)app/views/pages/sample.haml

= form_tag sample_path, :method => 'get' do 
    = text_field_tag :title, params[:title] 
    = submit_tag "Save" 

コントローラルート

# config/routes.rb 
get '/sample' => "pages#sample", :as => :sample 

は、お使いのコントローラのアクションapp/controllers/pages_controller.rb

def sample 
    title = params[:title] 
    sample = Sample.create(title: title) 
end 
関連する問題