2016-07-14 6 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) %> 

Может кто-нибудь предложить несколько способов, которыми это может быть достигнуто? Я хочу избежать использования формы, потому что это только одно поле, и я хочу, чтобы все было просто.

+0

Почему бы не использовать форму? Формы - это самый простой способ сделать это! В противном случае я собираюсь предложить обработчики onclick, псевдоформы и ненужный Javascript. Используйте форму, ваши конечные пользователи будут благодарны за это. – sjagr

+0

Я ценю ваше предложение. Но я начинаю работать в Rails, поэтому мне было интересно, есть ли другой способ сделать это. –

+0

Rails использует формы. – sjagr

ответ

2

Поскольку ваш вход text_field_tag ​​после загрузки DOM, вы, вероятно, захотите использовать JavaScript для добавления значения вашего text_field_tag ​​к событию click. Следующие виды использования 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. –

Смежные вопросы