質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2743閲覧

Railsでユーザー登録フォームのコラムを追加するとviewファイルでエラーが出る

r_nishida0624

総合スコア14

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/06/11 01:05

Railsでユーザー登録フォームのカラムをサンプルコードに記載ある"name", "email" に新しく”employee_num"というカラムを追加しようとしています。

Viewファイルのカラムフィールドのところで以下のようにエラーが出ております。どのように解決できますでしょうか?ちなみにRails version 5.0.0.1, ruby 2.3.0, ubuntu 14.04で、マイケル・ハートル氏のRails Tutorialで登場するサンプルを元に作成しています。

undefined method `mhps_employee_num_field' for #ActionView::Helpers::FormBuilder:0xba80a678

テーブルにはこのカラムは存在しており、viewファイルの内容は以下の通りです。

app/views/users/new.html.erb

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
<% provide(:title, 'Sign up') %>

<h1>Sign up</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form_for(@user, url: signup_path) do |f| %> <%= render 'shared/error_messages' %> <%= f.label :name %> <%= f.text_field :name, class: 'form-control' %> <%= f.label :email %> <%= f.email_field :email, class: 'form-control' %> <%= f.label :mhps_employee_num %> <%= f.mhps_employee_num_field :mhps_employee_num, class: 'form-control' %> <%= f.label :password %> <%= f.password_field :password, class: 'form-control' %> <%= f.label :password_confirmation, "Confirmation" %> <%= f.password_field :password_confirmation, class: 'form-control' %> <%= f.submit "Create my account", class: "btn btn-primary" %> <% end %> </div> </div> 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suama

2017/06/11 02:52

employee_num列がテーブルに存在するとして、“mhps_” というprefixが付いているのは何か理由がありますか?
gouf

2017/06/11 14:37

Rails Tutorial といったらこのページ( https://railstutorial.jp/ )かと思いますが、現在どのページ(URL)を参照されていますか?
r_nishida0624

2017/06/11 14:57

suama さん コメントありがとうございます。mhps_というのは特に理由はなく、単に会社名の略称を入れているだけです。
r_nishida0624

2017/06/11 14:59

goufさん、コメントありがとうございます。ページ右下の番号で、352ページの、リスト7.15です。この内容にラベルを1つ増やして、mhps_employee_numを追加しました。
gouf

2017/06/11 15:33

モデルに関連付けた/いた フォームを簡単に作成するためのフォームビルダ機能なので: mhps_employee_num というデータベース カラムは新設済みですか? モデルから参照・操作できますか?
r_nishida0624

2017/06/12 07:24

mhps_employee_numというデータベースカラムは作成しており、sqliteの画面から見てもカラムは準備できております。モデルから参照・操作できるかという問いにどう答えたらよいかわからないのですが、user.rb class User < ApplicationRecord before_save { email.downcase! } validates :name, presence: true, length: { maximum:30 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i validates :email, presence: true, length: { maximum:30 }, format: { with: VALID_EMAIL_REGEX } has_secure_password validates :password, presence: true, length: { minimum:6 } end, application_record.rbはclass ApplicationRecord < ActiveRecord::Base self.abstract_class = true end
guest

回答1

0

自己解決

http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html

上記リンクを参考にしながら@userにたいして、user_formを宣言して、から新しく追加したカラムでuser_form.text_field :xxxとインプットすることで、エラーが解消しました。name, email, passwordは特段こういった"xxx_form"の宣言が必要なかったのですが、新しく追加するときは必要なのでしょうか。取り急ぎ機能としては改善いたしました。皆様ありがとうございました。

投稿2017/06/12 08:36

r_nishida0624

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問