2016-03-26 7 views
0

私はレール上のルビーにはまったく新しいです... 私の_form.html.erbにはcollection_selectフィールドがあります。このフィールドはProductというモデルから取り込まれています。製品の表の列はid, name, and priceです。コレクションからアイテム(製品)を選択すると、選択した製品の価格をテキストフィールドに入力したいと考えています。項目を選択する際次の場合にrubyメソッドを呼び出す方法:onchangeイベントがトリガされる(ruby on rails 4)?

これまでのところ、私は次のコードIOTを持って、イベントをトリガ:

<%= collection_select(:warehouse, :product_id, Product.all, :id, :name, {}, {:onchange => "alert('Hello World');"})%> 

は、どのように私は私が選択した製品の対応する価格でtext_fieldを移入聞かせルビーメソッドを呼び出すことができますか?私は何かなどを考えていた方法については

...

def set_price 
     @price = Product.find(params[:id]).price 
end 

答えて

0

ERBスニペット

<%= collection_select(:warehouse, :product_id, Product.all, :id, :name, {}, {:onchange => "alert('Hello World');"})%> 

だからこの

<select name="warehouse[product_id]" onchange="alert('Hello World');"> 
    <option value="1">Product 1</option> 
    <option value="2">Product 2</option> 
    ... 
</select> 

のようなHTMLスニペットonchangeのコンテンツを生成しますブラウザ上で動作するジャバスクリプトの一部です。 onchangeにルビコードを直接実行させる方法はありません。できることは、onchangeでAJAXリクエストを送信し、Railsアプリケーションがそのリクエストに応答できるようにすることだけです。

+0

AJAXなしでこれを実行する別の方法がありますか? C#では、コールバックを使用してコントロールイベントを処理するこのタスクを実行できました。 Rubyのコールバックを使ってcollection_selectイベントを処理することは可能ですか?必要なものを達成するためのベストプラクティスは何ですか? –

+0

'ASP.net'のコールバックシステムはAJAXにも基づいています(クライアントサイドスクリプト言語としてjavascriptを選択した場合)。詳細については、[https://msdn.microsoft.com/en-us/library/ms178208.aspx](https://msdn.microsoft.com/en-us/library/ms178208.aspx)を参照してください。 – Aetherus

+0

あなたは絶対に正しいです。私はそのアプローチを試みるつもりです。あなたのお手伝いをありがとうございますAetherus –

関連する問題