私は新しいレールです。私は最近、既存のデータベースを使用しようとしている新しい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属性を現在の状態に更新するにはどうすればよいですか?
なぜあなたはemployee.rbに移行ファイルの本体を持っていますか?カスタムプライマリキーを使用している場合は、employee.rbでも必要です。 'set_primary_key:employee_id' – eeeeeean
私は[チュートリアル](https://medium.com/@kitsched/starting-a-ruby-on)に従っていました。 -rails-project-existing-data-7dda5044c85f#.e4u70cz12)を使用して、新しいrailsプロジェクトで既存のデータベースを使用します。 @eeeeeean – colio303
レールコンソールでEmployee.newを実行すると、属性の内容が表示されます。 supplier_idのnullでないエラーは正しいトラックにいることを示しますが、Employeeオブジェクトが期待どおりに動作することを確認するまでフォームを無視します。 – eeeeeean