通过参数将信息传递给控制器​​(不将其保存到数据库)。如何把它放在像用户params hash这样的哈希中

时间:2016-02-26 10:53:10

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

我有传递给控制器​​方法但未保存到数据库的信息。我想访问这个信息,它作为一个整体哈希传递给控制器​​方法,但它是所有单独的数据,如下所示。

这是params:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"0O7pbNNrddHCyPL9B/avUUD85574rFBfS57h+aWKK/mBakPSn5iHJKHhPmvuJVfyWxjBsAQn2kagwkTOALEKRg==", "page"=>{"content_top"=>"", "content_bottom"=>""}, "header1"=>"iijijij", "column1"=>"ijijijij", "header2"=>"", "column2"=>"", "header3"=>"", "column3"=>"", "header4"=>"", "column4"=>"", "commit"=>"Save", "guide_id"=>"dungeon-boss", "category_id"=>"heroes", "id"=>"link-skill"}

正如您所看到的那样,有一个page哈希,之后是header1 column1 header2 column2 ...依此类推。使用header1信息,我试图将它放在params哈希中,就像page哈希对其中传递的值一样。所以它就像"table" =>{"header1"=>"iijijij", "column1"=>"ijijijij", "header2"=>"", "column2"=>"", "header3"=>"", "column3"=>"", "header4"=>"", "column4"=>""}

我确信我需要在表单中添加一些内容,以便知道如何将它们分组。这是我目前的表格

<%  if (current_user.mod_of_game?(@guide) unless current_user.nil?) %>
   <%= form_for([@category, @page], url: update_pages_path) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>

       <%= f.label :content_top, "Top Content" %>
       <%= f.text_area :content_top, :class => 'editor' %>

       <%= f.label :content_bottom, "Bottom Content" %>    
       <%= f.text_area :content_bottom, :class => 'editor' %>

     <!-- to be in one hash when passed -->

       <%= text_field_tag :header1 %>    
       <%= text_field_tag :column1 %>

       <%= text_field_tag :header2 %>    
       <%= text_field_tag :column2 %>

       <%= text_field_tag :header3 %>    
       <%= text_field_tag :column3 %>

       <%= text_field_tag :header4 %>    
       <%= text_field_tag :column4 %>

     <!-- end -->

       <%= f.submit "Save"  %>

    <% end %>

我无法找到我需要添加的内容,以使text_field_tag数据在传递时都在一个哈希中。(text_field_tag故意不在表单提交时保存到数据库中,它只需要传递给方法并在哈希中分组)

2 个答案:

答案 0 :(得分:1)

如何使用fields_for这样

<%= form_for([@category, @page], url: update_pages_path) do |f| %>
<%= render 'shared/error_messages', object: f.object %>

   <%= f.label :content_top, "Top Content" %>
   <%= f.text_area :content_top, :class => 'editor' %>

   <%= f.label :content_bottom, "Bottom Content" %>    
   <%= f.text_area :content_bottom, :class => 'editor' %>

 <!-- to be in one hash when passed -->
   <%= f.fields_for :table do |t| %>

     <%= t.text_field_tag :header1 %>    
     <%= t.text_field_tag :column1 %>

     <%= t.text_field_tag :header2 %>    
     <%= t.text_field_tag :column2 %>

     <%= t.text_field_tag :header3 %>    
     <%= t.text_field_tag :column3 %>

     <%= t.text_field_tag :header4 %>    
     <%= t.text_field_tag :column4 %>
   <% end %>

 <!-- end -->

   <%= f.submit "Save"  %>

<% end %>

答案 1 :(得分:0)

如果要在params密钥内的page哈希中发送不属于该模型的数据,则可以使用数组方式。方法如下:

<%= text_field_tag 'page[header1]' %>    

不仅如此,如果您想使用其他密钥,您也可以使用它,例如<%= text_field_tag 'custom_key[header1]' %>