1

ユーザーがデータベースにデータを入力し、別のページでデータベースを検索できる Web サイトを作成しています。現時点では、新しいエントリの作成フォームは正常に機能し、検索をまだ実装していないため、テーブルを表示するための検索ページも正常に機能します。

コントローラ:

def search
 @project_search = Project.order(sort_column + " " + sort_direction)
end

  private

   def sort_column
    Project.column_names.include?(params[:sort]) ? params[:sort] : "project_name"
   end

   def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
   end


def create
@project = Project.new(params[:project])


@project.client = params[:new_client] unless params[:new_client].blank?
@project.exception_pm = params[:new_exception_pm] unless params[:new_exception_pm].blank?
@project.project_owner = params[:new_project_owner] unless params[:new_project_owner].blank?
@project.role = params[:new_role] unless params[:new_role].blank?
@project.industry = params[:new_industry] unless params[:new_industry].blank?
@project.business_div = params[:new_business_div] unless params[:new_business_div].blank?

respond_to do |format|
  if @project.save
    format.html { redirect_to @project, notice: 'Project was successfully created.' }
    format.json { render json: @project, status: :created, location: @project }
  else
    format.html { render action: "new" }
    format.json { render json: @project.errors, status: :unprocessable_entity }
  end
end
end

検索方法をコメントアウトすると、入力フォームは機能しますが、両方が存在すると、このエラーが発生します。

NilClass:Class の未定義メソッド `model_name'

1行目のフォームビューから抽出されたソース:

<%= form_for(@project) do |f| %>

ほんの小さな問題だと思いますが、修正方法がわかりません。私はRuby on Railsが初めてなので、簡単に行ってください:)。

ありがとう!

4

1 に答える 1

2

100%確かではありませんが、場所によると思いますprivate。Ruby では、その呼び出し以降はすべて非公開になります。Rails は create の定義を無視して独自のものを使用する場合があります。private「検索方法をコメントアウトする」というと、コメントアウトしている可能性はありますか?

于 2012-07-19T12:28:24.123 に答える