3

通貨と 2 つの通貨からの 2 つのドロップダウン入力に基づいて URL を生成する必要があります。たとえば、ユーザーが送信ボタンをクリックするとhttp://localhost:3000/currencies/usd-eur、フォームの通貨が usd で to_currency が eur の場合に、生成される URL が次のようになります。

これが私の見解です(index.html.erb)

 <%= semantic_form_for :calculator, :url => {:controller => "conversions", :action => "calculate" }  do |f| %>
      <p><%= f.label :amount %>
      <%= f.text_field :amount %></p>
      <p><%= f.label :from_currency %>
      <%= select :calculator, :from_currency, Choices['from_currency'] %></p>
      </p><%= f.label :to_currency %>
      <%= select :calculator, :to_currency, Choices['to_currency'] %></p>
       <p><%= f.submit "Calculate" %></p>
<%= end %>

ルート.rb

match 'currencies', to: 'conversions#index', via: :get
match 'currencies/convert', to: 'conversions#calculate', as: :calculate, via: :post

コントローラー(conversions_controller.rb)

def index
 end

 def calculate
  @amount = params[:calculator][:amount]
  @from_cur = params[:calculator][:from_currency]
  @to_cur = params[:calculator][:to_currency]
  @result = ConversionsHelper.calculate(@from_cur, @to_cur, @amount)
 end

私はGoogle APIからデータを取得しているため、そのためのモデルはありません。したがって、RESFFUL規則の境界の外に出る可能性があります。詳細な回答をいただければ幸いです。ありがとう。

4

4 に答える 4

3

このJavaScriptコードは、私の問題を解決しました。

  $(document).ready(function(){
        $('#Cal').attr('action', '/currencies');
        $("#Cal").submit(function(e){            
            var from = $('#calculator_from_currency').val().toLowerCase();
            var to = $('#calculator_to_currency').val().toLowerCase();
            var url_end = from + "-" + to;
            var url = $('#Cal').attr('action') + '/' + url_end;
            $('#Cal').attr('action', url);            
        });
    });

次に、ルートにこの行を追加しました。

  post '/currencies/:url' => 'conversions#calculate', via: [:post]
于 2013-10-01T06:29:48.870 に答える
1

jquery を使用して、フォームから値を選択してみてください。次に、URLを設定します

 $('form#currency_form').attr('action', url);

あなたのフォームの側に

アップデート

ルート ファイルで次のルートを使用します。

match '/currencies/', to: 'converter#show',   via: [:post]
  post '/currencies/:url_end' => 'converter#show'

それが役立つことを願っています。

于 2013-10-01T06:24:28.410 に答える
0

Ahh like mu is too short ごめんねブーブー

変化する

"/currencies/#{$(#id_of_from_currency option:selected).val()}-#{$(#id_of_to_currencyoption:selected).val()}"

"/currencies/#{$('#id_of_from_currency option:selected').val()}-#{$('#id_of_to_currency option:selected').val()}"

$() 内の '' に注意してください

于 2013-09-30T16:03:12.537 に答える