从params访问虚拟属性

时间:2016-01-03 06:21:44

标签: ruby-on-rails

ruby 2.1.5
rails 4.2.1

我试图找出如何从params访问虚拟属性。

在我的books_controller.rb中,我有:

wrap_parameters :books_list

def product_params
  params.require(:product).permit(:author_name, :book_name, :books_list)
end

显然,books_list是虚拟属性。我将把它保存到books_list表

在我的new.html.erb中,我有:

<% @title = "Books" %>

<div class="container">
  <div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
      <%= form_for(@books, html: { class: 'form-horizontal' }) do |f| %>
          <%= f.error_notification %>

          <div class="form-inputs">
            <%= f.form_group :author_name do |f| %>
                <%= f.label :author_name, class: 'control-label col-md-2' %>
                <div class='col-md-8'>
                  <%= f.text_field :author_name, class: 'form-control' %>
                  <%= f.error_messages %>
                </div>
            <% end %>

            <div class="form-inputs">
              <%= f.form_group :book_name do |f| %>
                  <%= f.label :book_name, class: 'control-label col-md-2' %>
                  <div class='col-md-8'>
                    <%= f.text_field :book_name, class: 'form-control' %>
                    <%= f.error_messages %>
                  </div>
              <% end %>

              <%= f.form_group :books_list do |f| %>
                  <%= f.label :books_list, class: 'control-label col-md-2' %>
                  <div class='col-md-8'>
                    <%= f.text_area :books_list, class: 'form-control' %>
                    <%= f.error_messages %>
                  </div>
              <% end %>

          </div>

          <div class="form-actions col-md-offset-2 col-md-10">
            <%= f.submit class: 'btn btn-primary' %>
            <%= link_to "Cancel", test_sets_path, class: 'btn' %>
          </div>
      <% end %>
    </div>
  </div>
</div>

当我提交表格时,这就是我对params的所得:

Parameters: {
  "utf8"=>"✓", 
  "authenticity_token"=>"5mxkibQHkwRnzVU31A6pe9uezsmaWeYbCUgU+gUZPLmiAZPnN6si+smdEePU0lfGITh7gmmyChf/bOY+YQQcQg==", 
  "books"=>{"author_name"=>"Some Author", "book_name"=>"Dwan Of The Dead"}, 
  "books_list"=>{"{:class=>\"form-control\"}"=>"book1\r\nbook2"}, 
  "commit"=>"Create Book List"
}    

我无法访问params中的books_list。有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

如果books_list中不存在@book列,则会引发错误。 rails中没有方法f.form_group,我认为你使用定义form_group方法的gem。

也许"books_list"=>{"{:class=>\"form-control\"}"=>"book1\r\nbook2"}参数是由某些bootstrap gem制作的。你检查html源代码中的check name属性。