我有一组Twilio Recording SID,我用它来生成用户呼叫录音的链接。当我在桌子上使用它们并且SID为空时,我想打印" No Recording"。
<tr>
<% @empty_check.each do |rec| %>
<% if rec.empty? %>
<td><%= "No Recording" %></td>
<% else %>
<td><%=link_to 'listen', "https://api.twilio.com/2010-04-01/Accounts/{@account_sid}/Recordings/" + rec, :target => "_blank"%></td>
<% end %>
<% end %>
</tr>
即使我知道给定数组中的某个值为空,它仍然会打印else
代码。
此外,当我做这样的事情时
@empty_check.each {|m| print m.empty?}
falsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
我看到true
值。
我在条件之上缺少什么,因为它没有认识到空值?
**更新
@empty_check
示例是我试图找出我认为的问题和调试。
这是实际的控制器代码:
@sub_account_client = Twilio::REST::Client.new(@account_sid, @auth_token)
@subaccount = @sub_account_client.account
@calls = @subaccount.calls
@callslist = @calls.list({:page_size => @page_size, :page => @page, :"start_time>" => @start_date, :"start_time<" => @end_date})
@callsids = @callslist.map {|m| m.parent_call_sid}.compact
实际的观看代码:
<% @callsids.each do |c| %>
<tr>
<% @call = @calls.get(c) %>
<td><%= Date.parse(@call.date_created).strftime("%m/%d/%y") %></td>
<td><%= Time.parse(@call.start_time).strftime("%I:%M%P") %></td>
<td><%= @call.from %></td>
<td><%= @call.to %></td>
<td><%= ChronicDuration.output(@call.duration.to_i, :format => :short) %></td>
<% @recording = @recordings.get(c) %>
<% @calls.get(@call.sid).recordings.list.each do |rec| %>
<% if rec.sid.empty? %>
<td><%= "No Recording" %></td>
<% else %>
<td><%=link_to 'listen', "https://api.twilio.com/2010-04-01/Accounts/#{@account_sid}/Recordings/" + rec.sid, :target => "_blank"%></td>
<% end %>
<% end %>
</tr>
<% end %>
答案 0 :(得分:0)
您确定要在打印测试和主代码块中访问相同的变量吗?尝试在您感兴趣的测试之前在模板中输出@empty_check
的值(可选择在评论中)。
更新以回复更新的问题:
<% @calls.get(@call.sid).recordings.list.each do |rec| %>
问题不在于此吗?如果呼叫没有录音,则将跳过整个块,因此它将永远不会写入#34;没有录音。&#34;。我正在猜测Twilio API,但是你确定返回的记录对象的sid
值为.empty?
无法将上述行简化为:
<% @calls.get(c).recordings.list.each do |rec| %>
甚至:
<% @call.recordings.list.each do |rec| %>
如果您不想(并首先使用API尝试此操作),请在每种情况下执行if xxx.empty?
。
<% reclist = @call.recordings.list %>
<% if reclist.empty? %>
<td><%= "No Recording" %></td>
<% else %>
<% reclist.each do |rec| %>
<td><%=link_to 'listen', "https://api.twilio.com/2010-04-01/Accounts/#{@account_sid}/Recordings/" + rec.sid, :target => "_blank"%></td>
<% end %>
<% end %>
接受答案后添加简化版。如果有多个录音用于呼叫,则将标签拉出if(和每个)以外的所有链接在同一个表格单元格中。
<% reclist = @call.recordings.list %>
<td>
<% if reclist.empty? %>
No Recording
<% else %>
<% reclist.each do |rec| %>
<%=link_to 'listen', "https://api.twilio.com/2010-04-01/Accounts/#{@account_sid}/Recordings/" + rec.sid, :target => "_blank"%>
<% end %>
<% end %>
</td>