2017-05-07 6 views
0

登録しようとしているときに問題が見つかりました。登録ボタンをクリックしたときにnew.html.erbのすべてのフィールドを入力した後、次のようなエラーが表示されます:enter image description here 登録をクリックすると、同じページがレンダリングされますが、エラーのリストとすべての空を作成しています。なぜ、保存していないのかわかりませんでした。フィールド全体。ここでフォームからのデータを保存している間

は私のプログラム

new.html.erb

<%= form_for @user, :html=> {:id => 'create_user'} do |f| %> 
    <div class="text-center" style="font-size:16px;color:red;"> 
    <% if @user.errors.any? %> 
     <ul> 
      <% @user.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
      <% end %> 
     </ul> 
     <% end %> 
    </div> 

    <div class="form-group"> 
    <%= f.text_field :name, class: 'form-control', placeholder: 'Enter Name' , name: "name" , id: "name" %> 

    </div> 
    <div class="form-group"> 
    <%= f.text_field :category, list: "category", id:"select", placeholder:"Select By category" %> 
     <datalist id="category"> 
     <select> 
      <option value="Student" /> 
      <option value="Faculty" /> 
      <option value="HOD" /> 
      <option value="Principle" /> 
      <option value="Dean" /> 
      <option value="Chairman" /> 
     </select> 
     </datalist> 
    </div> 
    <div class="form-group"> 
    <%= f.email_field :email, class: 'form-control', placeholder: 'Email' , name:"email" , id: "email" %> 
    </div> 
    <div class="form-group"> 
    <%= f.password_field :password, class: 'form-control', placeholder: 'Password' , name: "password" , id:"password" %> 
    </div> 
    <div class="form-group"> 
    <%= f.password_field :password_confirmation , placeholder: "Re-type Password" , class: "form-control" , name:"password_confirmation", id:"Re_type" %> 
    </div> 
    <div class="form-group"> 
    <div class="row" style="margin-top:20px;"> 
     <div class="col-lg-8 col-lg-offset-2 col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-10 col-xs-offset-1"> 
     <%= f.submit "Register", class: "btn btn-primary btn-block disabled" , id: "register" %> 
     </div> 
    </div> 
    </div> 
<% end %> 

routes.rbを

Rails.application.routes.draw do 
    root "users#index" 
    get '/' => "users#index" 
    get "/new" => "users#new" 
    resources :users 
    post "/users" => "users#create" 
    get "users/:id" => "users#show" 

    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 

users_controller.rb

です210
Class UsersController < ApplicationController 
    def index 
    end 

    def new 
    @user = User.new 
    end 

    def show 
    end 

    def create 
    @user = User.create(user_params) 
    puts "======================================================================" 
    puts @user 
    puts "======================================================================" 
    if @user.save 
     session[:user_id] = @user.id 
     flash[:success] = "Welcome to the My project!" 
     redirect_to user_path(:id) 
    else 
     render :new1 
    end 
    end 

    private 

    def user_params 
     params.require(:user).permit(:name,:category, :email, :password) 
    end 
end 

user.rb

class User 
    include Mongoid::Document 

    field :name, type: String 
    field :category, type: String 
    field :email, type: String 
    field :password, type: String 
    validates :name, presence: true ,format: { with: /\A[a-zA-Z]+\z/} 
    validates :email, presence: true , format: { with: /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i } , uniqueness: { case_sensitive: false } 
    validates :password , presence: true 
    before_save :downcase_fields 

    def downcase_fields 
    self.name.downcase! 
    self.category.downcase! 
    self.email.downcase! 
    end 
end 

私を助けてください。 バックエンドとしてmongodbを使用していて、フォームフィールドからデータを保存しようとしていますが、エラーが常に表示されています。有効なデータをデータベースに格納していません。

+0

のどれですか。あなたの質問にそれを加えてください。 – Gerry

+0

Gerry、私は投稿を変更しました。また、エラーを含む画像も添付しました。この問題を解決するために私を助けてください。 –

+0

'params'はどうなっていますか? –

答えて

0

あなたの入力は、nameidをあなたの入力で上書きしています。主にname

<%= f.email_field :email, class: 'form-control', placeholder: 'Email' , name: "email" , id: "email" %> 
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

これらを削除してください。


説明:レールの規則により、この場合には名前がuser[name]すべきであり、idはuser_nameする必要があります。

名前がuser[name]ではないため、強力なparamsメソッドはそれを破棄します。 nameは、user

params.require(:user).permit(:name) 
関連する問題