2016-10-27 13 views
1

私は新しいレールです。私は最近、既存のデータベースを使用しようとしている新しいRailsプロジェクトを開始しました。このデータベースのモデルを作成する際には、私のnew.html.erbファイルにいくつかの記号(:emid, :sid, :conid, :emnum, :tc, :emac)を使ってフォームフィールドを特定しました。私はこれらがデータベース列の名前と一致しなければならないことに気付きませんでした。私はそれらを現在("employee_id", "supplier_id", "contractor_id", "employee_number", "trade_code", "employee_active")のものに変更しましたが、ロードされるhtmlページは変更されません。フォームの入力用のid属性は、それらのすべてを変更しても更新されません。Ruby on Rails;フォームIDタグは更新されません

モデル(employee.rb):

class Employee < ActiveRecord::Base 
    self.table_name = "Employee" 
    def change 
    create_table "Employee", primary_key: :"employee_id", force: :cascade do |t| 
     t.integer "supplier_id",  limit: 4,    null: false 
     t.integer "contractor_id", limit: 4,    null: false 
     t.string "employee_number", limit: 45,    null: false 
     t.string "trade_code",  limit: 45,    null: false 
     t.integer "employee_active", limit: 1, default: 1, null: false 
    end 
    end 
end 

new.html.erb:

{"utf8"=>"✓", 
"authenticity_token"=>"y9UsuK6rc9qdhy/e0WPUJiT5rzw1QQqDuGpIVl4l4sUpVP2ZUm6Yak3/GImT8niSt5wbyf43OUGH1FrzulylQA==", 
"employee"=>{"emid"=>"", 
"sid"=>"666", 
"conid"=>"66", 
"emnum"=>"f", 
"tc"=>"f", 
"emac"=>"1"}, 
"commit"=>"Save Employee"} 

コントローラー:

class EmployeesController < ApplicationController 
    def new 

    end 
    def create 
    @employee = Employee.new(e_params) 

    @employee.save 
    redirect_to @employee 
    end 
    private 
    def e_params 
     params.require(:employee).permit("employee_id", "supplier_id", "contractor_id", "employee_number", "trade_code", "employee_active") 
    end 
end 
ブラウザから

<p> 
    <%= f.label :title %><br> 
    <%= f.text_field "employee_id" %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_field "supplier_id" %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_field "contractor_id" %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_field "employee_number" %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_field "trade_code" %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_field "employee_active" %> 
    </p> 

エラー出力

HTMLソース:
Mysql2::Error: Field 'supplier_id' doesn't have a default value: INSERT INTO ``Employee`` VALUES()
私はこれが私のモデルは、HTMLフォームが何であるかを認識することができないとの情報を得ることができないためであると仮定しています。このため

<p> 
    <label for="employee_title">Title</label><br> 
    <input type="text" name="employee[emid]" id="employee_emid" /> 
    </p> 

    <p> 
    <label for="employee_text">Text</label><br> 
    <input type="text" name="employee[sid]" id="employee_sid" /> 
    </p> 

    <p> 
    <label for="employee_text">Text</label><br> 
    <input type="text" name="employee[conid]" id="employee_conid" /> 
    </p> 

    <p> 
    <label for="employee_text">Text</label><br> 
    <input type="text" name="employee[emnum]" id="employee_emnum" /> 
    </p> 

    <p> 
    <label for="employee_text">Text</label><br> 
    <input type="text" name="employee[tc]" id="employee_tc" /> 
    </p> 

    <p> 
    <label for="employee_text">Text</label><br> 
    <input type="text" name="employee[emac]" id="employee_emac" /> 
    </p> 

は、私はエラーを取得しますそれから。

id属性を現在の状態に更新するにはどうすればよいですか?

+1

なぜあなたはemployee.rbに移行ファイルの本体を持っていますか?カスタムプライマリキーを使用している場合は、employee.rbでも必要です。 'set_primary_key:employee_id' – eeeeeean

+0

私は[チュートリアル](https://medium.com/@kitsched/starting-a-ruby-on)に従っていました。 -rails-project-existing-data-7dda5044c85f#.e4u70cz12)を使用して、新しいrailsプロジェクトで既存のデータベースを使用します。 @eeeeeean – colio303

+0

レールコンソールでEmployee.newを実行すると、属性の内容が表示されます。 supplier_idのnullでないエラーは正しいトラックにいることを示しますが、Employeeオブジェクトが期待どおりに動作することを確認するまでフォームを無視します。 – eeeeeean

答えて

0

私はすべてを閉じてコンピュータを再起動することでこの問題を回避することができます。私はそれがこれに最も良い方法ではなかったと確信していますが、それは仕事を完了しました。サーバーを再起動し、ページソースからIDタグを確認したところ、すべてnew.html.erbファイルの更新値がありました。

関連する問題