在Rails局部视图中显示用户名而不是id

时间:2015-09-17 12:20:51

标签: ruby-on-rails ruby-on-rails-4

我知道必须有一个非常简单的解决方案,但我无法弄清楚如何。

在拍卖展示视图中,我正在显示所有出价的列表,其中包含有关投标人(=已投标的用户)。设置新出价时,user_id已成功保存在出价表中。

我想显示投标人名称而不是他的ID。 (使用@bidder = User.find(@ bid.user_id))

bids_controller.rb:

class BidsController < ApplicationController
  # Create new bid
  def create
    # find Auction related to new Bid
    @auction = Auction.find(params[:auction_id])
    @bid = @auction.bids.create(bid_params)
    @bid.user_id = current_user.id
    # Find the bidder within User Table
    @bidder = User.find(@bid.user_id)
    @bid.save
    redirect_to auction_path(@auction), :notice => "Bid placed"
  end

出价部分视图:views \ bid \ _bid.html.erb

<p>
  <strong>Bidder:</strong>
  <%= @bidder.name %>
</p>

<p>
  <strong>Bid-Amount:</strong>
  <%= bid.amount %>
</p>

<p>
  <%= link_to 'Destroy Bid', [bid.auction, bid],
              method: :delete,
              data: { confirm: 'Are you sure?' } %>
</p>

整件事显示在拍卖展示视图中:

视图\拍卖\ show.html.erb

<h2>Bids</h2>
<%= render @auction.bids %>
<h2>Place a Bid:</h2>
<%= render 'bids/form' %>
<h2>Comments</h2>
<%= render @auction.comments %>
<h2>Add a comment:</h2>
<%= render 'comments/form' %>

错误:

  

拍卖中的NoMethodError#show Showing   C:/Users/santa/Documents/rails/app/views/bids/_bid.html.erb   第3行提出的地方:

     

未定义的方法`name&#39; for nil:NilClass提取源(行

     

3):1 2 3 4 5 6

         <p>
<strong>Bidder:</strong>
<%= @bidder.name %>   </p>
 <p>
     

模板包含跟踪:app / views / auctions / show.html.erb

名称存在于Users表

1 个答案:

答案 0 :(得分:2)

而不是<%= @bidder.name %>尝试添加<%= bid.user.name %>。如果在user_id表格中bid正确保存,那么显然会有has_manybelongs_to关联。

只需将<%= @bidder.name %>替换为<%= bid.user.name %>

即可