2017-12-26 11 views
0

ドロップダウンから値を取得しようとしていますが、ローカル変数と同じ値に設定して表示しようとしています。私が見つけたすべてのチュートリアルでは、Postメソッドを使用してデータベースに値を格納します。Ruby on Railsでローカル変数をドロップダウンから設定しました

ユーザーがドロップダウンで選択したものと同じローカル変数を設定することはできますか?ここで

は私が何をしようとしている示していくつかのサンプルコードで、私は、変数の年齢に等しい選択し、ドロップダウン値を設定する方法がわからない...

<% year = 2017 %> 
<p>What is your age?</p> 
<%= select_tag "my_age", raw("<option>1</option><option>2</option><option>3</option>") %> 
<% birth_year = year - age %> 
<%= puts "You were born in #{birth_year}" %> 

答えて

0

方法に基づいて、あなたはあなたの質問を書いた、それはいくつかのJavaScriptを使用するソリューションが欲しいように聞こえます。 Rubyはサーバー上で実行されます。サーバーがユーザーが選択した内容を知りたい場合は、サーバーにデータを送信する必要があります。そのため、他のチュートリアルではPOSTのデータをサーバーに読み込んでいます。あなたはそれが1つのインスタンスの呼び出しにのみ生きているローカル変数について話しているので

const year = 2017 
const my_age = document.getElementById("my_age") 

my_age.addEventListener("change", (evt) => { 
    const age = evt.target.value 
    const birth_year = year - age 
    console.log("You were born in " + birth_year) 
}) 
0

:ここ

は、JavaScriptの少しでこれを行うことができます方法です。あなたが使用したい変数は、ビューが呼び出される前に一度レンダリングされることを意味します。
あなたが参照しているドロップダウンは、フォームsubmitを通過するフォーム要素です。したがって、変更するたびにリロードする必要があります。birth_year。この場合、GETまたはPOSTのいずれかを使用している場合は、大きな違いはありません。コントローラで

<%= form_tag("/myaction", method: "get") do %> 
    <p>What is your age?</p> 
    <%= select_tag "my_age", raw("<option>1</option><option>2</option>   
    <option>3</option>") %> 
    <%= puts "You were born in #{@birth_year}" %> 
<% end %> 

:ビューで

一方

def myaction 
    year = Date.today.year 
    age = params[:my_age] 
    @birth_year = year - age 
end 

、あなたはできるだけ早くあなたが必要とするクライアントページ(フロントエンド)のように変数を使用することを計画している場合Javascriptまたは使用している他のクライアントサイドフレームワークの値を設定します。

関連する問題