0

コントローラの1つで「新しい」アクションにアクセスすると、「NilClass:Classの未定義のメソッド`model_name'」という恐ろしいエラーが発生します。/ works/newにアクセスするとエラーが発生します。ユーザーhas_manyWorks。これがWorksコントローラーです。

class WorksController < ApplicationController

  def index
    @works = Work.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @works }
end

def create
@work = current_user.works.build(params[:works])
    if @work.save
      redirect_to root_url
    else
      render 'home'
    end
  end

def new
  @work = Work.new
end

def destroy
  @work.destroy
  redirect_to root_url
end

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

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

new.html.erbビューファイルでは、次のループを使用してフォームを作成し、入力されたフィールドを送信すると、ユーザーの新しい作業レコードが作成されます。

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

Railsにユーザー関係を念頭に置いて新しいWorkを作成するように指示していないので、これがエラーの原因であると感じています。これが問題であると仮定して正しいですか?もしそうなら、どうすれば上記のループを修正できますか?

4

1 に答える 1

0

新しいメソッドを変更して、Workオブジェクトを現在のユーザーにスコープするようにすることをお勧めします。それがあなたの問題かどうかはわかりませんが...

def new
  @work = current_user.works.new
end

アップデート:

メソッド定義がコントローラーにねじ込まれているようです。create、、、newおよびdestroyは実際にはindexメソッド内で定義されています。メソッドendの真上にあるをメソッドの真上に移動する必要があります。showcreate

于 2013-02-27T04:11:14.340 に答える