2013-04-06 58 views
1

第一次使用ROR,我試圖從表單提交中的索引視圖創建一個新的模型對象。我想我想通弄明白了,但我發現:試圖在Ruby on Rails中使用表單提交創建模型對象

uninitialized constant UsersController 

在我看來,我有:

=form_for :user, :url => { :action => "new", :controller => "user" } do |f| 
    = f.text_field :username, :placeholder => 'Username', :size => 30 
    %br 
    = f.text_field :email, :placeholder => 'E-mail', :size => 30 
    %br 
    = f.password_field :password, :placeholder => 'Password', :size => 30 
    %br 
    %br 
    = f.submit_tag 'Sign Up' 

在我的控制,我有:

def new 
user_info = :params[:user] 
    @user = User.create!(user_info) 
    flash[:notice] = "#{@user.username} has been added! Please fill out your profile page." 
    redirect_to user_path 
end 

任何人都可以看到爲什麼我得到這個?

+1

的第一個問題是你應該使用'f.submit'用'form_for'幫手。結尾處帶有'_tag'的助手用於創建與模型無關的表單。 – xkickflip 2013-04-06 20:28:59

+0

謝謝!你可以長時間凝視某些東西,只是看不到眼前的東西,你知道嗎? – BooBailey 2013-04-06 20:31:18

+0

沒問題,看起來好像你的動作有點過了,雖然寫了一個答案幫助 – xkickflip 2013-04-06 20:32:29

回答

1

第一個問題是使用f.submit_tagform_for幫手。其他意見..

當Rails的形式做這樣你應該使用new行動來建立一個空的模型的形式在

def new 
    @user = User.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render :json => @user } 
    end 
end 

工作形式隨後將提交給create行動,其中你讀了params並使用它們來創建一個User對象,你會節省

def create 
    @user = User.new(params[:post]) 

    respond_to do |format| 
    if @user.save 
     format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
     format.json { render :json => @user, :status => :created, :location => @user } 
    else 
     format.html { render :action => "new" } 
     format.json { render :json => @post.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

這裏的respond_to塊讓你檢查其他的文件擴展名,通常以.json或.xml,並給予您可以爲每種擴展格式化輸出。

對於show動作,你可以有以下幾種:

def show 
    @user = User.find(params[:id]) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render :json => @user } 
    end 
end 

,並轉到/用戶/ 1,你會看到呈現在您的視圖(這是默認這樣的空行有與評論#show.html.erb你不必做任何假設你有一個觀點)

,如果你去/users/1.json你會得到的@user.to_json它從你的Javascript

交談Rails是有用的只是結果

和關於未確定常數問題:

  1. 檢查你的UsersController不缺少任何end

  2. 檢查相關的用戶模型和UsersController了所有正確的命名約定,以免混淆Rails的

users_controller.rb:

class UsersController < ApplicationController 
... 
end 

user.rb:

class User < ActiveRecord::Base 
... 
end 
相關問題