我错过了什么?
ERROR: undefined local variable or method `feedback' for #<#<Class:0x007f66dc8dca30>:0x007f66dc8cee80>
迁移:
class CreateFeedbacks < ActiveRecord::Migration
def change
create_table :feedbacks do |t|
t.references :user
t.text :body
t.timestamps
end
end
end
型号:
class Feedback < ActiveRecord::Base
attr_accessible :body, :user
belongs_to :user
end
控制器:
class FeedbacksController < ApplicationController
before_action :authenticate_user!
def index
@feedback = Feedback.all
end
def new
@feedback = Feedback.new
end
def create
@user = User.find(params[:user])
@feedback = @user.feedbacks.create(params[:feedback])
respond_to do |format|
if @feedback.save
format.html { redirect_to @user, notice 'Comment was successfully created.' }
format.json { render json: @feedback, status: :created, location: @feedback }
else
format.html { render action: "new" }
format.json { render json: @feedback.errors, status: :unprocessable_entily }
end
end
end
用户模型:
has_many :feedback
路线:
resources :feedbacks
resources :users do
resources :feedbacks
end
答案 0 :(得分:1)
首先,正确设置问题和代码的样式以及标记文件(routes.rb
,controllers
,models
正确)有很大帮助。否则,读者很难理解您的问题并发现代码问题。您可以参考https://meta.stackoverflow.com/editing-help了解styleguide / markdown。
其次,看起来您的routes.rb
不正确 - 但同样,这可能是由于您的格式化造成的。根据您的问题,您的路线看起来像是:
resources :feedbacks
resources :users do
resources :feedbacks
end
end
应该是:
resources: users do
resources: feedbacks
end
第三,您的模型中似乎有拼写错误(feedback
而不是feedbacks
。这就是:
class User < ActiveRecord::Base
has_many :feedbacks
end
class Feedback < ActiveRecord::Base
belongs_to :user
end
最后,请添加细节以及导致错误的确切运行内容。例如。你在控制台运行了什么东西,你加载了哪个页面?