任何人都可以为我阐明这一点吗?
#
的未定义方法`first_name'这是show.html
<p id="notice"><%= notice %></p>
<div id="container">
<p>
<b>First name:</b>
<%= @artist.firstname %>
</p>
<p>
<b>Second name:</b>
<%= @artist.surname %>
</p>
<p>
<b>About:</b>
<%= @artist.about %>
</p>
<div id="comments">
<h2>Comments</h2>
<%= render :partial => "shared/comment", :collection => @artist.comments%>
</div
</div>
<%= render :partial => "image", :collection => @artist.images %>
<%= link_to 'Edit', edit_artist_path(@artist) %> |
<%= link_to 'Back', artists_path %>
<%= link_to 'show', images_path %>
这是部分
<div class="comment">
<p>
<span class="commentator"><%= comment.commentator.display_name %>
say's</span>
<%= comment.comment %>
</p>
</div
这是好友视图
class Friends < ActiveRecord::Base
attr_accessible :firstname, :surname
has_many :comments, :as => :commentator, :class_name =>"Commentable"
def display_name
"#{self.firstname} #{self.surname}"
end
end
这是朋友控制器
class FriendsController < ApplicationController
# GET /friends
# GET /friends.xml
def index
@friends = Friend.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @friends }
end
end
# GET /friends/1
# GET /friends/1.xml
def show
@friend = Friend.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @friend }
end
end
# GET /friends/new
# GET /friends/new.xml
def new
@friend = Friend.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @friend }
end
end
# GET /friends/1/edit
def edit
@friend = Friend.find(params[:id])
end
# POST /friends
# POST /friends.xml
def create
@friend = Friend.new(params[:friend])
respond_to do |format|
if @friend.save
format.html { redirect_to(@friend, :notice => 'Friend was successfully created.') }
format.xml { render :xml => @friend, :status => :created, :location => @friend }
else
format.html { render :action => "new" }
format.xml { render :xml => @friend.errors, :status => :unprocessable_entity }
end
end
end
# PUT /friends/1
# PUT /friends/1.xml
def update
@friend = Friend.find(params[:id])
respond_to do |format|
if @friend.update_attributes(params[:friend])
format.html { redirect_to(@friend, :notice => 'Friend was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @friend.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /friends/1
# DELETE /friends/1.xml
def destroy
@friend = Friend.find(params[:id])
@friend.destroy
respond_to do |format|
format.html { redirect_to(friends_url) }
format.xml { head :ok }
end
end
end
我正在尝试制作它,所以朋友可以在艺术家页面上留言,但我不断收到上述错误。
我是Ruby的新手,所以如果我遗漏了任何东西,我会道歉。
答案 0 :(得分:4)
基本上,rails会查看数据库以确定模型上的字段。因此,请确保已运行迁移,并且db表上存在first_name。
另外,朋友是复数。在rails中,你的表是复数(朋友),你的模型是单数(朋友),你的控制器是复数(FriendsController)。最好不要违背这一惯例。尝试重命名模型,看看会发生什么
答案 1 :(得分:0)
您需要将Friend
类的第2行设为attr_accessible :firstname, :surname
,以便您的视图可以访问这些变量。
答案 2 :(得分:0)
此错误与数据库有关,您的db.Run迁移中不存在first_name。