Ruby on rails 未定义的方法'first#u name';

Ruby on rails 未定义的方法'first#u name';,ruby-on-rails,ruby,Ruby On Rails,Ruby,有人能帮我解释一下吗 未定义的方法“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&g

有人能帮我解释一下吗

未定义的方法“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 %>

名字:

第二个名字:

关于:

评论 “共享/评论”:集合=>@artist.comments%> @艺人图片%> |
这是部分原因

 <div class="comment">



     <p>


      <span class="commentator"><%= comment.commentator.display_name %> 

    say's</span>


      <%= comment.comment %>


      </p>



    </div


萨伊

:评论员,:class_name=>“可评论” def显示单元名称 “#{self.firstname}#{self.姓氏}” 终止 终止
这是朋友控制器

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
class-FriendsController@friends}
终止
终止
#获得/朋友/1
#GET/friends/1.xml
def秀
@friend=friend.find(参数[:id])
回应待办事项|格式|
format.html#show.html.erb
format.xml{render:xml=>@friend}
终止
终止
#获得/朋友/新
#GET/friends/new.xml
def新
@朋友
回应待办事项|格式|
format.html#new.html.erb
format.xml{render:xml=>@friend}
终止
终止
#获取/好友/1/编辑
定义编辑
@friend=friend.find(参数[:id])
终止
#发帖/好友
#POST/friends.xml
def创建
@friend=friend.new(参数[:friend])
回应待办事项|格式|
如果@friend.save
format.html{redirect_to(@friend,:notice=>“friend已成功创建”)}
format.xml{render:xml=>@friend,:status=>:created,:location=>@friend}
其他的
format.html{render:action=>“new”}
format.xml{render:xml=>@friend.errors,:status=>:unprocessable_entity}
终止
终止
终止
#PUT/friends/1
#PUT/friends/1.xml
def更新
@friend=friend.find(参数[:id])
回应待办事项|格式|
如果@friend.update_属性(参数[:friend])
format.html{redirect_to(@friend,:notice=>“friend已成功更新”)}
format.xml{head:ok}
其他的
format.html{render:action=>“edit”}
format.xml{render:xml=>@friend.errors,:status=>:unprocessable_entity}
终止
终止
终止
#删除/friends/1
#删除/friends/1.xml
def销毁
@friend=friend.find(参数[:id])
@朋友,毁灭
回应待办事项|格式|
format.html{重定向到(朋友的url)}
format.xml{head:ok}
终止
终止
终止
我正在尝试这样做,这样一个朋友可以在艺术家的页面上留下评论,但我一直得到上面的错误


我对Ruby非常陌生,所以如果我遗漏了什么,我很抱歉。

您需要
Friend
类的第2行是
attr\u可访问的:firstname,:name
,这样您的视图就可以访问这些变量。

您需要
Friend
类的第2行是
attr\u可访问的:firstname,:姓氏
,这样您的视图就可以访问这些变量。

基本上,rails将查看数据库以确定模型上的字段。因此,请确保已运行迁移,并且db表中存在第一个名称


朋友也是复数形式。在rails中,表是复数形式(friends),模型是单数形式(Friend),控制器是复数形式(FriendsController)。最好不要违背这个惯例。尝试重命名模型,看看会发生什么基本上,rails会查看数据库,找出模型上的字段。因此,请确保已运行迁移,并且db表中存在第一个名称


朋友也是复数形式。在rails中,表是复数形式(friends),模型是单数形式(Friend),控制器是复数形式(FriendsController)。最好不要违背这个惯例。尝试重命名模型并查看会发生什么情况

此错误与数据库中不存在第一个名称的数据库相关。请小心运行迁移。

此错误与数据库中不存在第一个名称的数据库相关。请小心运行迁移。

此错误需要放置在哪里?Friend类的第2行,在上面,你的
有很多
声明它看起来像
朋友
评论员
的一个子类-确保
评论员
类的名字和姓氏也有
attr\u可访问性
。attr\u访问器可能就是你所说的(attr\u可访问性是关于批量分配的白名单),但我认为他的名字应该来自db,所以attr_访问器不会解决problem@MattBriggs我的假设是,在某个时候,
评论员
需要指定
名字
姓氏
,因此他无论如何都需要这样做,是的,在
朋友
类中,如果它只用于查看
评论员
的名字,那么你只能需要使用
attr\u accessor
。需要将其放置在何处?
Friend
类的第2行,在上面,你的
有很多
声明它看起来像
朋友
评论员
的一个子类-确保
评论员
类的名字和姓氏也有
attr\u可访问性
。attr\u访问器可能就是你所说的(attr\u可访问性是关于批量分配的白名单),但我认为他的名字应该来自db,所以attr_访问器不会解决problem@MattBriggs我的假设是,在某个时候,
评论员
需要指定
名字
姓氏
,因此他无论如何都需要这样做,是的,在
朋友
类中,如果它只用于查看
评论员
的名字,那么你只能需要使用
attr\u accessor
.t.string:firstname t.string:names这是您的问题,在您的ruby代码中用firstname替换firstname,它应该可以工作
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