控制器和视图中的if / else Rails

时间:2016-10-18 11:06:12

标签: ruby-on-rails conditional ruby-on-rails-5

我有一个应用程序,我正在将比特币集成到使用BlockIo API。当用户想要付款时,会为他们创建一个新的比特币地址并保存在数据库中,并且在他们付款后,该金额也会被保存,并且该金额将从API中检索。我需要有关语法或正确方法的帮助才能使条件语句正常工作。

要在控制器中生成并保存新的比特币地址,代码为:

@new_address = BlockIo.get_new_address
Payment.create( btc: @new_address['data']['address'] )

我想创建一个条件语句,如果上次付款(amount:)的金额(Payment.last)为<= '0.00000000' || == nil,则会显示已生成的比特币地址,否则会生成新的地址。

付款模式/控制器的属性为bitcoin:stringamount:string

更新:以下代码有效,但首先显示@last_address,然后刷新时会在视图中显示新生成的地址。

def create_address
  @last_address = Payment.last.bitcoin
  @last_amount = Payment.last.amount

  if @last_amount == '0.00000000' || @last_amount == nil
    @last_address
  else
    @new_address = BlockIo.get_new_address
    Payment.create( btc: @new_address['data']['address'] )
  end
end

但上述代码无效,因为在我更新上次付款时,它不会生成新地址。通过控制台达到更大的金额。

请告知我如何更好地使用以下代码来获得所需的结果:

Send your Bitcoins to:

<% if @last_address %>
  <strong><%= @last_address %></strong><br>
  <%= image_tag src="https://chart.googleapis.com/chart?chs=250x250&cht=qr&chl=#{@last_address}" %>
<% else %>
  <strong><%= @new_address['data']['address'] %></strong><br>
  <%= image_tag src="https://chart.googleapis.com/chart?chs=250x250&cht=qr&chl=#{@new_address["data"]["address"]}" %>
<% end %>

更新:请告知我的观看代码是否正确,因为我仍然首先看到&#34; old&#34; @last_address并需要刷新以查看实际新生成的@last_address。

1 个答案:

答案 0 :(得分:0)

我已经设法让它以我想要的方式工作,虽然它仍然感觉有点hacky,因为我确保在保存新地址后页面刷新,因此只显示最新保存的地址。

def create_address
  @last_address = Payment.last.bitcoin
  @last_amount = Payment.last.amount

  if @last_amount == '0.00000000' || @last_amount == nil
    @last_address
  else
    @new_address = BlockIo.get_new_address
    Payment.create( btc: @new_address['data']['address'] )
    respond_to do |format|
      format.html { redirect_to '/save_btc'}
    end
  end
end