【问题标题】:Ruby on Rails - Send two text_field_tag values present inside form_for in hash formatRuby on Rails - 以散列格式发送 form_for 中存在的两个 text_field_tag 值
【发布时间】:2013-08-26 11:28:15
【问题描述】:

我有一个 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 和 value 参数,如下所示:

{screen_params => {"label1" => "val1", "label2" => "val2"}, ...}

如果有人对此有任何想法,请告诉我。

谢谢, 院长

【问题讨论】:

  • 我添加了这样的文本文件 20, :class=> 'screen_label search-txt-input', :maxlength => 360 %> 并通过以下方式获取参数: psp_admin_portal"=>{"psp_name"=>"kkkk", "psp_url"=>"", "psp_username"= >"", "psp_password=>"XXXX", "config_params"=>{"screen_label"=>{"1"=>​​"label1", "2"=>"label2", "3"=>"label3" , "4"=>"label4"}, "screen_value"=>{"1"=>​​"val1", "2"=>"val2", "3"=>"val3", "4"=>" val4"}, "is_masked"=>{"1"=>​​"false", "2"=>"false", "3"=>"false"}}}, "commit"=>"添加 PSP"}
  • 所以在模型中,我以票证描述中提到的格式分隔所需的哈希
  • 它工作正常吗?...如预期的那样?我的回答有用吗?

标签: ruby-on-rails ruby-on-rails-3 form-for


【解决方案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”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2018-05-28
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多