2016-11-17 8 views
1

に基づく声明私は基本的なフォームを持っている場合:フォームを選択し、レール

<%=form_for @person do |f| %> 
<%= f.label :ThingsWanted, "Stuff I need" %> 
<%= f.select :ThingsWanted, ['cat', 'dog', 'purse', 'lipstick', 'fish'], { :include_blank => 'Selector' }, :required => true %> 
<%= f.submit 'Done'%> 
<%end%> 

は、私は何をしたいフォームが送信される前に、選択された内容に基づいて、if文を作成しています。それから私は、私はフォームが送信される前に、選択した値をif文を作成したり、むしろアクセスする方法がわからない

<%if lipstick is selected%> 
explain_yourself goes here 
<%end%> 

explain_yourselfと呼ばれる新しいフォームの値を作成したい口紅が

を選択していると言います。 ..

答えて

0

jqueryを使用できます。
フォームにクラスを追加し、また、問題のinputタグにHTMLに

<%=form_for @person do |f| :class => "the_form_class" %> 

<%= f.select :ThingsWanted, ['cat', 'dog', 'purse', 'lipstick', 'fish'], { :include_blank => 'Selector' }, :class => "the_input_class" :required => true %> 

を、その後jqueryの中で、フォームに

$(".the_form_class").on("submit", some_function) 

ノートオン提出する機能を追加します。確認してくださいをあなたはdocument.ready

にこのオン提出するイベントハンドラをラップし、その関数を定義(定義がdocument.readyに包まする必要はありません)

function some_function(e){ 
e.preventDefault(); 
    if($(".the_input_class").val() == "lipstick"){ 
    do_some_stuff 

    } 
$(".the_form_class").submit(); 
} 
+0

e.preventDefaultは、フォームが実際に送信されるのを停止します。次に、コードを実行します。その後、.submit()はif文が評価された後に実際にフォームを送信します – borbesaur

+0

申し訳ありませんが、私はルビーベースの解決法が存在する場合はそれを探しています。これは本当に私のためには機能しません。私の実際のフォームははるかに大きく複雑です。私は、選択値にアクセスし、それをきれいに保つためにいくつかの埋め込みルビーを使用する簡単な方法があることを望んでいました。 – codingdraculasbrain

0

これはパラメータとインスタンス変数を使用していたため、この最もよい回避策でした。申し訳ありませんが、例は素晴らしいですが、それは動作します。

Do you have lipstick? 
<%= link_to "Yes", onclick: @a=0%></td> 
<%= link_to "No", onclick: @a=1%> 
<% if params[:onclick].to_i == 1%> 
    <%= f.label :ThingsWanted, "Stuff I need" %> 
    <%= f.select :ThingsWanted, ['lipstick'], { :include_blank => 'Selector' }, :class => "the_input_class" :required => true %> 
<%else%> 
<br/> 
    <%= f.label :explain_yoself, "Select what you need" %> 
    <%= f.select :ThingsWanted, ['cat', 'dog', 'purse', 'fish'], { :include_blank => 'Selector' }, :required => true %> 
    <%= f.text_area :explain_yourself %> 
<%end%> 
関連する問題