How to set up form for a hash in Rails?

前端 未结 3 577
悲哀的现实
悲哀的现实 2021-02-06 01:47

I have some data associated with a model that is in a hash. The hash is generated in the controller: @hash.

What is the proper way to create a form for this

相关标签:
3条回答
  • 2021-02-06 02:12

    When you use the helpers that end with _tag that's what happens.

    Instead of text_field_tag ... use f.text_field ....

    In order to get a hash like params => {:hash => {:field1 => "", :field2 => ""}} you have to pair up form_for with f.input_field_type instead of simply input_field_tag.

    See the difference?

    0 讨论(0)
  • 2021-02-06 02:18

    Based on this article you should change the name in text_field_tag to

    <% @hash.keys.each do |key| %>
      <div class="field">
        <%= f.label key %><br />
        <%= text_field_tag "hash[" + key + "]", @hash[key] %> 
      </div>
    <% end %>
    
    0 讨论(0)
  • 2021-02-06 02:28

    My answer is not strictly on topic but I really recommend you to take a look at http://railscasts.com/episodes/219-active-model. You could use ActiveModel APIs to simulate a model object with Rails 3. Doing that you could simply do something like

    <%= form_for(@object) %>
    

    and leaving the populating of your object to Rails APIs.

    0 讨论(0)
提交回复
热议问题