在选择硬币名称后显示硬币的价格

Display the price of a coin after selecting its name in select

提问人:Taras Rogulya 提问时间:5/18/2023 最后编辑:Taras Rogulya 更新时间:5/18/2023 访问量:53

问:

我使用slim-select,您可以在其中选择硬币的名称,选择名称后如何显示其价格(价格在数据库中,我可以通过选择中选择的名称找到它)我该怎么做(也许我应该使用Ajax,但是如何 )?

我的表单与选择

<%= form_with(model: @investment, local: true) do |f| %>
      <div class="">
        <p class="very-mb-sm text-center"> <%= f.label :coin_name %></p>
        <%= f.select :coin_name, Coin.pluck(:name), {include_blank: true},{data: {controller: 'slim',class:'my-slim-select'}}%>
      </div>
      <p class="very-mb-sm very-mt-sm text-center"> <%= f.label :shopping_price %></p>
      <p class="text-center "><%= f.text_field :shopping_price, class: 'form-text-field'%></p>

      <p class="very-mb-sm very-mt-sm text-center"> <%= f.label :invest %></p>
      <p class="text-center"><%= f.text_field :invest, class: 'form-text-field'%></p>
        
      <div class="div-center mt-btn">
        <%= f.submit '+', class: "text-20" %>
      </div>
<% end %>

更新 1

呈现的 HTML

<div class="popup-content">
    <form action="/investments" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="u_oVXD2WK9CBd13gQq2i5XSDiEED389yjhY1Pv22sDj2fVz6Y2HJVwj2RRHGgzW9xcXSb78BYmjGFAhmMGOugA" autocomplete="off" />
      <div class="">
        <p class="very-mb-sm text-center"> <label for="investment_coin_name">Coin name</label></p>
        <select data-controller="slim" data-class="my-slim-select" name="investment[coin_name]" id="investment_coin_name"><option value="" label=" "></option>
<option value="Solana">Solana</option>
<option value="TRON">TRON</option>
<option value="Binance USD">Binance USD</option>
<option value="Dai">Dai</option>
<option value="Shiba Inu">Shiba Inu</option>
<option value="Litecoin">Litecoin</option>
<option value="Avalanche">Avalanche</option>
<option value="Uniswap">Uniswap</option>
<option value="Toncoin">Toncoin</option>
<option value="Wrapped Bitcoin">Wrapped Bitcoin</option>
<option value="Monero">Monero</option>
<option value="LEO Token">LEO Token</option>
<option value="TrueUSD">TrueUSD</option>
<option value="Ethereum Classic">Ethereum Classic</option>
<option value="OKB">OKB</option>
<option value="Chainlink">Chainlink</option>
<option value="Filecoin">Filecoin</option>
<option value="Cosmos Hub">Cosmos Hub</option>
<option value="Stellar">Stellar</option>
<option value="Lido DAO">Lido DAO</option>
<option value="Aptos">Aptos</option>
<option value="Bitcoin Cash">Bitcoin Cash</option>
<option value="Cronos">Cronos</option>
<option value="Quant">Quant</option>
<option value="Hedera">Hedera</option>
<option value="ApeCoin">ApeCoin</option>
<option value="The Graph">The Graph</option>
<option value="NEAR Protocol">NEAR Protocol</option>
<option value="Algorand">Algorand</option>
<option value="VeChain">VeChain</option>
<option value="Arbitrum">Arbitrum</option>
<option value="BNB">BNB</option>
<option value="Cardano">Cardano</option>
<option value="XRP">XRP</option>
<option value="Ethereum">Ethereum</option>
<option value="USD Coin">USD Coin</option>
<option value="Tether">Tether</option>
<option value="Polkadot">Polkadot</option>
<option value="Dogecoin">Dogecoin</option>
<option value="Lido Staked Ether">Lido Staked Ether</option>
<option value="Polygon">Polygon</option>
<option value="MultiversX">MultiversX</option>
<option value="Aave">Aave</option>
<option value="Radix">Radix</option>
<option value="Bitcoin">Bitcoin</option>
<option value="Internet Computer">Internet Computer</option>
<option value="Pax Dollar">Pax Dollar</option>
<option value="Fantom">Fantom</option>
<option value="EOS">EOS</option>
<option value="The Sandbox">The Sandbox</option></select>
</div>

JavaScript Ruby-on-Rails AJAX PostgreSQL SlimSelect

评论

0赞 mykaf 5/18/2023
呈现的 HTML 是什么样子的?还是你尝试过的脚本?我可能会使用数据属性来存储其价格,然后根据需要显示该值。
0赞 Taras Rogulya 5/18/2023
@mykaf更新问题并添加呈现的 HTML
0赞 mykaf 5/18/2023
假设您正在从数据库中提取选项,请继续提取价格并将其作为数据属性包含在内,以便于访问。请使用您尝试过的 JS 进行更新。

答:

0赞 000723-weict 5/18/2023 #1

我想如果你使用的是咖啡JS,那么我可以在这里提供帮助。

我假设您正在使用 turbolinks:load 来查看您的资产。

您可以创建如下内容:

coinWithPrices: ->
    coin = $('#investment_coin_name').val()
    $.ajax(url : '/commons/get_prices', data :{ coin_name: coin })
    .then (data) ->
        selected_price = $('#investment_coin_price').data('coin_price')

$(document).on "turbolinks:load", ->
     coinWithPrices.init()

这是咖啡js的一部分,现在在Rails上做了一些工作。

def get_prices
    @coin_name = params[:coin_name]
    data[:coin_price] = Investment.where("coin_name is ilike '#{@coin_name}'")
    render 'investment_form'
  end

我假设您的模型名称是 Investment,您的表单名称是 investment_form。

我认为这对你有用。