2016-07-16 3 views
0

こんにちは私はひどく書かれたコードをいくつか持っています。私はこれをどうやってやるべきかわからない。複数のテーブルを操作し、コントローラ内の配列に値を代入してビューに表示する

は、まず正常に動作リンクがあります:

assignment_controllerのメソッド入札者にリンクします
<td><%= link_to 'Show', bidders_assignments_path(:assignment_id => assignment.id), :method => :post %></td> 

:@biddersアレイがデータで満たされると

def bidders 
    @bids = Bid.where(bidders_params).find_each 
    #I suspect there's error in the lines below 
    @bids.each do |bid| 
    @bidders = User.where(user.id => bid.user_id).find_each 
    end 
end 

def bidders_params 
    params.permit(:assignment_id) 
end 

、それが表示されますビュー:

<% @bidders.each do |bidder| %> 
    <tr> 
    <td><%= bidder.gender %></td> 
    <td><%= bidder.experience %></td> 
    <td><%= bidder.expected_salary %></td> 
    <td><%= bidder.education_id %></td> 
<% end %> 

エラーは@ bididの埋め込みにあると思われます私はここにいるのは確かではありません。前もって感謝します!

+0

エラーとは何ですか?私はそれがブロックを渡されるべきだからこの '@bids = Bid.where(bidders_params).find_each'だと思う。 –

+0

@ j-dexx私はArup Rakshitの提案に従ってdefの入札者を変更した: ' def bidder bidders_ids = bid。ここで(bidders_params).pluck(:user_id) @bidders = User.where(id:bidders_ids) end' これでエラーは表示されず、データは表示されません。 '@bids = bid.where(bidders_params).find_each' 問題は私が信じた後です。 – Benjamin

+0

どのように問題はないと判断していますか?渡された引数に一致するデータがデータベースに存在しないことがありますか? –

答えて

1

SQL INクエリを作成する必要があります。

def bidders 
    bid_ids = Bid.where(bidders_params).pluck(:user_id) 
    @bidders = User.where(id: bid_ids) 
end 

使用インスタンス変数ビューに、コントローラからデータを公開する:それはあなたのコードを修正します。一時的な計算を行うために変数が必要な場合は、ローカル変数を使用します。

+0

ありがとうが、私はそれがエラーだとは思わない。私は問題は '<%@ bidders.each do | bidder | %> 'part – Benjamin

+0

私は配列の入札者を適切に宣言しなかったと思います。入札者の中にはデータが存在しない可能性があります。 – Benjamin

関連する問題