我对rails非常陌生,而且我一直在努力将数据从控制器发送到视图。我有一个控制器框架,其中我有一些where
条件,以便将该数据传递给视图,但是当它不是
nil
我的控制器是这样的(我知道它很乱,很抱歉)
class FrameController < ApplicationController
before_action :authenticate_user!
def contract
@offer_c = Offer.where(user_id: current_user.id)
@contract_o = Contract.where(offer_id: @offer_c)
@user_cliente = Contract.where(user_id: current_user.id)
@user_ofertante = Contract.where(id: @contract_o)
@offer_cliente = @user_clinete.offer_id
@oferta_completa = Offer.where(id: @offer_cliente)
@oferta_usuario = User.where(id: @offer_cliente.user_id)
end
end
我的观点是这样的
<% if @user_cliente %>
<% @user_ofertante.each do |contract| %>
<% @offer_c.each do |offer| %>
<% if contract.offer_id == offer.id %>
<div class="dropdown-divider">Mías</div>
<a class="dropdown-item" href="#notificacion" data-toggle="modal">
<strong>Oferta: </strong><%=offer.name%>
<p>
<strong>Usuario: </strong><%= User.where(id: Contract.user_id).first.firstName%>
</p>
</a>
</div>
<%end%>
<%end%>
<%end%>
<%end%>
现在我知道它没有按预期工作,因为我有一个current_user.id = 2
的用户和一个user_id =2
的合同。
当我使用@user_cliente = Contract.where(user_id: current_user.id)
将<% if @user_cliente %>
置于视图中并且它不执行后面的代码时,但是当我在控制台中放置相同的Contract.where(user_id: current_user.id)
时,合同确实不会出现。如下图所示:
提前致谢