2015-09-17 3 views
0

Я знаю, что должно быть очень простое решение, но я просто не могу понять, как это сделать.Показать имя пользователя вместо id в частичном представлении Rails

Внутри выставочного шоу, я показываю список всех предложений с претендентом (= Пользователь, который разместил заявку). При размещении новой заявки пользователь user_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 

Частичный вид: просмотр \ предложения \ _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 View:

видом \ aucti Дополнения \ 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 in Auctions#show Showing C:/Users/santa/Documents/rails/app/views/bids/_bid.html.erb where line #3 raised:

undefined method `name' for nil:NilClass Extracted source (around line

3): 1 2 3 4 5 6

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

Trace of template inclusion: app/views/auctions/show.html.erb

имя существует в таблице Users

ответ

2

Вместо <%= @bidder.name %> попробуйте добавить <%= bid.user.name %>. Если user_id правильно сэкономить в таблице bid, то, очевидно, есть has_many и belongs_to.

Просто замените <%= @bidder.name %> на <%= bid.user.name %>

+0

Спасибо, вот это! (Не могу поверить, что я провел 4 часа, пытаясь ...) Я соглашусь через 8 мин. –

+0

Хорошо. Это случилось когда-то :) –

Смежные вопросы