我有一个应用程序,我正在将比特币集成到使用BlockIo API。当用户想要付款时,会为他们创建一个新的比特币地址并保存在数据库中,并且在他们付款后,该金额也会被保存,并且该金额将从API中检索。我需要有关语法或正确方法的帮助才能使条件语句正常工作。
要在控制器中生成并保存新的比特币地址,代码为:
@new_address = BlockIo.get_new_address
Payment.create( btc: @new_address['data']['address'] )
我想创建一个条件语句,如果上次付款(amount:
)的金额(Payment.last
)为<= '0.00000000' || == nil
,则会显示已生成的比特币地址,否则会生成新的地址。
付款模式/控制器的属性为bitcoin:string
和amount: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。
答案 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