1

ROR を初めて使用し、フォーム送信時にインデックス ビューから新しいモデル オブジェクトを作成しようとしています。私はそれを理解したと思いますが、私は得ています:

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

なぜ私がこれを取得しているのか誰にもわかりますか?

4

1 に答える 1

1

最初の問題は、ヘルパーで使用f.submit_tagするだけでした。form_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

/users/1 に移動すると、ビューがレンダリングされます(これがデフォルトであるため、#show.html.erbビューがあると仮定して何もする必要のないコメントが付いた空の行があります)

/users/1.json に移動すると@user.to_json、Javascript から Rails と対話するのに役立つ結果が得られます。

そして、未定義の定数の問題に関して:

  1. UsersController にend行が欠落していないことを確認します

  2. Rails を混乱させないように、関連する User モデルと UsersController の命名規則がすべて正しいことを確認します。

users_controller.rb:

class UsersController < ApplicationController
...
end

ユーザー.rb:

class User < ActiveRecord::Base
...
end
于 2013-04-06T20:36:40.130 に答える