在提交form_for表单期间缺少Hidden_​​field_tag值

时间:2016-02-05 02:59:31

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2

我有一个使用form_for帮助器的表单,在这个表单中我已经包含了一些hidden_​​field_tags,我通过javascript更新,

这是表格:

 <% form_for :ticket, @ticket, :url => { :controller => 'provider/tickets', :action => 'create'}, :html => { :id => "new_ticket", :multipart => true } do |f| %>
 <%= f.error_messages %>
 <p>
  <%= f.label :Regarding %><br />
  <%= f.text_field :title %>
  <%= hidden_field_tag :general_comments, '', :id => "general_comments" %>
  <%= hidden_field_tag :resident_id, @resident.id %>
  <%= hidden_field_tag :send_type, 'everyone', :id => "send_type" %>
  <%= hidden_field_tag :email, true, :id => "email_value" %>
  <% @categories.each do |category_comments_|%>
  <%= hidden_field_tag "category_comments_" + category_comments_.id.to_s , '', :id => "category_comments_" + category_comments_.id.to_s %> 
 <% end %>
 </p>
 <%= f.submit 'Create' %>
 </p>
 <% end %>

我正在通过javascript更新hidden_​​field_tag,当我在浏览器中查看时,它会被赋值,

Value got assigned to the hidden values

但是如果我提交表格,这个hidden_​​field_tag的参数是空的,我不知道为什么会发生这种情况,请在提交时查看下面的屏幕截图以查看空参数。

enter image description here

但是如果我在form_tag中使用相同的字段,它工作正常,如果我在form_中使用它,因为它不起作用。

此循环内的值只是没有正确提交,

   <% @categories.each do |category_comments_|%>
    <%= hidden_field_tag "category_comments_" + category_comments_.id.to_s , '', :id => "category_comments_" + category_comments_.id.to_s %> 
   <% end %>

由于应用程序太旧,版本是Ruby 1.8.7和Rails 2.3。任何人都可以帮我解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:2)

基于文档:http://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_field

您可以使用:value参数为隐藏字段添加值。

示例:

hidden_field(:object, :field, :value => params[:requestval])

通过javascript更新值时,您可能需要设置如下:

f.hidden_field :field_name, {:value => ''}

正如他们在Hidden Field Submission

中建议的那样

答案 1 :(得分:0)

我发现了问题,

我在hidden_​​field_tag的名称中使用了string而不是:symbol。现在我将字符串更改为符号,现在所有值都在提交表单时使用参数发送。

这就是我已经拥有的,

<% @categories.each do |category_comments_|%>
<%= hidden_field_tag "category_comments_" + category_comments_.id.to_s , '', :id => "category_comments_" + category_comments_.id.to_s %> 
<% end %>

现在我改变了这个,如下所示,

<% @categories.each do |category_comments_|%>
         <% specific_category = "category_comments_" + category_comments_.id.to_s %>
  <%= hidden_field_tag specific_category.parameterize.underscore.to_sym, '', :id => "category_comments_" + category_comments_.id.to_s %>
<% end %> 

现在工作正常。