Ruby on Rails - Отправьте два значения text_field_tag, присутствующих внутри form_for в формате хэша
У меня есть form_for, где у меня есть некоторые поля, связанные с объектом формы, и есть некоторые поля, которые не связаны с объектом формы, поэтому для этих полей я использую text_field_tag. Но эти поля похожи на пару ключ-значение, поэтому при отправке формы я хочу объединить или, вернее, отправить в хэш-формате, чтобы в коде контроллера я мог легко сохранить эти значения вместе.
Вот мой код form_for
[Демо]
<%= form_for [@var], :url => {:action => form_action}, :html => {:id => form_id} do |f| %>
<table border=0 cellpadding="0" cellspacing="8" id='psp-config-form' >
<tr class='psp_config_row'>
<td><label for=''>Screen Label</label></td>
<td>
<%= text_field_tag "screen_label[]", "", :size => 20, :class => 'search-txt-input', :maxlength => 360 %>
</td>
<td><label for=''>Value</label></td>
<td>
<%= text_field_tag "screen_value[]", "", :size => 20, :class => 'search-txt-input', :maxlength => 360 %>
</td>
<td><label for=''>Mask Value</label></td>
<td>
<%= check_box_tag "is_masked[]", "", false, :class => 'search-txt-input' %>
</td>
<td>
<%= link_to 'Delete', "javascript:void(0);", :class => 'linkclass delete_link', :title => 'Confirmation', :style=>"display: none" %>
</td>
</tr>
<tr>
<td></td>
<td class="add_psp_config_button">
<%= link_to "Add Additional PSP credentials", "javascript:void(0);", :title => "Add PSP Config Values", :class => "actionBtn button", :id => "add_psp_config_button" %>
<td>
</tr>
<tr>
<td></td>
<td>
<%= f.submit 'Add PSP',:class => 'loginBtn', :id => 'add-psp-button'%>
</td>
<td>
<%= text_field_tag 'cancel', 'Cancel', :type=> 'button', :class => 'loginBtn' %>
</td>
</tr>
Вот текущие параметры, отправленные на контроллер:
Parameters: {"utf8"=>"?", "authenticity_token"=>"sMZYtNbYGXf3iDtYrOVafHxwzFTM4U8+V5xOyFgr5/8=", "psp_admin_portal"=>{"psp_name"=>"google", "psp_url"=>"https://google.com", "psp_username"=>"google-username", "psp_password=>"XXXX"}, "screen_label"=>["label1", "label2", "label3"], "screen_value"=>["val1", "val2", "val3"], "commit"=>"Add PSP"}
Итак, здесь я нахожу способ, с помощью которого я могу отправить screen_lable и значения параметров следующим образом:
{screen_params => {"label1" => "val1", "label2" => "val2"}, ...}
дайте мне знать, если у кого-нибудь из вас есть идеи по этому поводу.
Спасибо декан
1 ответ
Попробуйте использовать метод object_name для объекта формы, как показано ниже,
<%= text_field_tag "#{f.object_name}[your_variable_name]", "", :size => 20, :class => 'search-txt-input', :maxlength => 360 %>
Если вы отправите его сейчас, хеш объекта формы будет иметь этот элемент, "your_variable_name" => "value_entered_in_text_box".