2016-07-14 18 views
0

私はコントローラに値を渡すtext_field_tagを持っています。text_field_tagの値をRailsのコントローラに渡す

<%= text_field_tag 'amount', 'Enter amount' %> 

私はすでに他のパラメータを渡すlink_toタグを持っており、このテキストボックスの値をコントローラアクションに渡したいと思っています。

<%= link_to "Do it", do_it_path(id: some.id, detail: card.summary) %> 

これは達成可能ないくつかの方法をお勧めしますか?フォームは1つのフィールドなので、フォームを使用しないようにしたいので、単純なものにしたいと考えています。

+0

なぜフォームを使用しませんか?フォームは、実際にこれを行うための最も簡単な方法です!それ以外の場合は、 'onclick'ハンドラ、疑似フォーム、および不要なJavascriptを提案します。フォームを使用すると、エンドユーザーはそれに感謝します。 – sjagr

+0

私はあなたの提案を感謝します。しかし、私はRailsから始めているので、私はそれを行うことができる他の方法があるのだろうかと思っていました。 –

+0

Railsはフォームを使用します。 – sjagr

答えて

2

あなたのtext_field_tag入力はDOMがロードされた後であるため、JavaScriptを使用してtext_field_tagの値をリンクのクリックイベントに追加することをお勧めします。以下はjQueryを使用しています:

<%= text_field_tag "amount", "Enter amount", class: "amount_field" %> 

<%= link_to "Do it", do_it_path(id: some.id, detail: card.summary), class: "do_it_link" %> 

<script> 
    $(".do_it_link").click(function() { 
    $(this).attr("href", function() { 
     return this.href + "&amount=" + $('.amount_field').val(); 
    }); 
    }); 
</script> 

本当にフォームを使用してください。よりシンプルで安全です。

<%= form_for @something do |f| %> 
    <%= f.text_field :amount, placeholder: "Enter amount" %> 
    <%= f.hidden_field :detail, value: card.summary %> 
    <%= f.submit "Do it" %> 
<% end %> 
+0

両方のアプローチから学んだ。私はjavascriptの方法を探していましたが、私はform_tagを使用して終了しました。 –

関連する問題