0

検索フォームの作成中に問題に直面しています。次のエラーが表示されます。

undefined method `model_name' for NilClass:Class

これは私のビューファイルです:

"日付ピッカー" %>

これは私のclients_controller.rbです:

class ClientsController < ApplicationController
  def newClients
  end
end

そして、これは私のモデル client.rb です:

class Client < ActiveRecord::Base
  # attr_accessible :title, :body
end

パラメータの使用に混乱していform_forます。form_forパラメータを使用する方法と理由を簡単に説明できる人はいますか?

編集 1

コントローラーを次のように変更しました

class ClientsController < ApplicationController
  def search
      redirect_to root_path
  end
end

送信ボタンをクリックすると、エラーが表示されます

No route matches [GET] "/search"
4

2 に答える 2

2

You are missing something here. Let me explain.

In your controller you don't need to define a custom method (called newClients) since Rails conventions suggest to use the following:

class ClientsController < ApplicationController
  # GET /clients
  def index
    @clients = Client.all
  end

  # GET /clients/:id    
  def show
    @client = Client.find(params[:id])
  end

  # GET /clients/new
  def new
    @client = Client.new
  end

  # POST /clients
  def create
    @client = Client.new(params[:client])
    if @client.save
      redirect_to :back, success: "Successfully created..."
    else
      render :new
    end
  end

  # GET /clients/:id/edit
  def edit
    @client = Client.find(params[:id])
  end

  # PUT /clients/:id
  def update
    @client = Client.find(params[:id])
    if @client.update_attributes(params[:client])
      redirect_to :back, success: "Successfully edited..."
    else
      render :edit
    end
  end

  # DELETE /clients/:id
  def destroy
    @client = Client.find(params[:id]).destroy
    redirect_to :back, success: "Successfully deleted..."
  end
end

And finally, in order for your form_for to work properly, you need to pass it an instance of a class:

form_for @client

where @client is Client.new in your case.

于 2013-08-28T10:02:01.890 に答える
0

まず、コントローラーで Rails の命名規則に従ってください。メソッド名はnew_clientsまたはである必要がありますnew

def new
  @client = Client.new
end

ビュー名は new.html.erb にする必要があります。

@clientコントローラーで定義するのではなく、使用しているビューで定義します。

于 2013-08-28T09:59:34.380 に答える