Ruby on rails 不允许的参数:Rails 5.2

Ruby on rails 不允许的参数:Rails 5.2,ruby-on-rails,ruby,parameters,ruby-on-rails-5,Ruby On Rails,Ruby,Parameters,Ruby On Rails 5,我正在构建一个应用程序,用户可以在其中发布房地产属性。因此,我有两个表,一个称为属性,另一个称为便利设施(用于浴室、游泳池等图标)。我将便利设施表与属性表分开,以便我可以将其与其他表一起使用,我有此错误未经允许的参数::健身房 <%= form_with(model: property, local: true) do |form| %> <% if property.errors.any? %> <div id="error_explana

我正在构建一个应用程序,用户可以在其中发布房地产属性。因此,我有两个表,一个称为属性,另一个称为便利设施(用于浴室、游泳池等图标)。我将便利设施表与属性表分开,以便我可以将其与其他表一起使用,我有此错误未经允许的参数::健身房

<%= form_with(model: property, local: true) do |form| %>
    <% if property.errors.any? %>
        <div id="error_explanation">
            <h2><%= pluralize(property.errors.count, "error") %> prohibited this property from being saved:</h2>

            <ul>
                <% property.errors.full_messages.each do |message| %>
                    <li><%= message %></li>
                <% end %>
            </ul>
        </div>
    <% end %>

    <div class="container">
        <div class="field">
            <%= form.label :name %>
            <%= form.text_field :name %>
        </div>

        .
        .
        .
       <!--Gym attribute from amenities-->
        <div class="field">
            <%= form.label :gym %>
            <%= form.number_field :gym %>
        </div>

        <div class="actions">
            <%= form.submit %>
        </div>
    </div>
<% end %>
这是我的代码:

property.rb模型

class Property < ApplicationRecord
    belongs_to :owner
    has_many :amenities
    accepts_nested_attributes_for :amenities
end
class Amenity < ApplicationRecord
    belongs_to :property
end
就我而言,这必须很好地工作,但我在理解它时遇到了一些问题。我会感谢你们的帮助!谢谢

编辑:

我的网络表单

<%= form_with(model: property, local: true) do |form| %>
    <% if property.errors.any? %>
        <div id="error_explanation">
            <h2><%= pluralize(property.errors.count, "error") %> prohibited this property from being saved:</h2>

            <ul>
                <% property.errors.full_messages.each do |message| %>
                    <li><%= message %></li>
                <% end %>
            </ul>
        </div>
    <% end %>

    <div class="container">
        <div class="field">
            <%= form.label :name %>
            <%= form.text_field :name %>
        </div>

        .
        .
        .
       <!--Gym attribute from amenities-->
        <div class="field">
            <%= form.label :gym %>
            <%= form.number_field :gym %>
        </div>

        <div class="actions">
            <%= form.submit %>
        </div>
    </div>
<% end %>

禁止保存此属性:
. . .
这部分参数
“property”=>{“name”=>“propied1”、“description”=>“propied1”、“price”=>“120000”、“gym”=>“1”}
的结构应该与
属性参数中的结构相同

参数
gym
必须位于
便利设施属性中

像这样:
“property”=>{“name”=>“propied1”,“description”=>“propied1”,“price”=>“120000”,“便利设施属性”=>[{“gym”=>“1”}]}

UPD

看看这个

尝试在表单视图中使用这段代码:

<!--Gym attribute from amenities-->
<%= form.fields_for :amenities do |amenities_form| %>
  <div class="field">
    <%= amenities_form.label :gym %>
    <%= amenities_form.number_field :gym %>
  </div>
<% end %>

这就是我在控制台日志中看到的输出

“属性”=>{“名称”=>“PropiedD1”、“说明”=>“PropiedD1”、“价格”=>“120000”、“健身房”=>“1”}

这些是属性的参数,最后一个值是“gym”=>“1”,这就是您获得不允许的参数的原因

它应该出现在“便利设施”属性下,如


“property”=>{“name”=>“propied1”,“description”=>“propied1”,“price”=>“120000”},“便利设施属性”:[{“gym”=>“1”}]}

意义重大,但我如何才能做到这一点?我确实在我的属性模型中添加了嵌套属性,事实上,我在许可参数中将其作为嵌套属性。我如何才能使“健身房”=>“1”
成为便利设施属性?您需要创建一个适当的web表单。请在您的问题中添加视图中的形式代码。哦!好的,我刚刚在编辑下添加了我的帖子。我做了一些更改:1。-我将用于:便利设施做|便利设施做|形式|
form.fields|u用于:便利设施做|便利设施做|
为什么,因为它没有显示健身房的输入。2.-现在我面临另一个错误,没有将符号隐式转换为整数,rails错误在控制器中突出显示了这段代码:
@property=current\u owner.properties.build(property\u params)
Yakov,成功了。唯一导致它无法工作的是,我需要在properties\u controller.rb中的新方法中添加:
@property.commercies.build
。谢谢你的帮助,成功了!嘿,吉迪恩,谢谢你的回复,这对我来说很有意义,但是我如何才能让:gym属性显示为in the communications_属性?事实上,我确实实现了accepts_nested_属性,那么我如何才能做到这一点呢?@kenSanchez我将向您介绍这一点,它解决了如何提交包含便利设施属性的参数。这不是一个真正可持续的解决方案。随着可用设施列表的增加,表中列的数量也会增加。你要做的是设置一个标准化表(便利设施),存储可用便利设施的定义,以及一个连接表(便利设施属性),在属性和便利设施之间创建多对多关联。你说的听起来很有趣,事实上这是大多数人建议我做的。你有关于你所说的话的信息和资源吗?比如博客或者什么我可以深潜的地方?我会很感激的我不知道。也许可以从关联上的rails指南开始?关系建模更像是整本书的主题。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"GjmTFKS3cQRwgrSnTLFOoWQV/gXdTgST0nf7GOs7ZS2i8wneFqzADeTLUo26UKkA5392nrDKGZpVyav4LWpfjw==", "property"=>{"name"=>"Propiedad1", "description"=>"Propiedad1", "price"=>"120000", "gym"=>"1"}, "commit"=>"Create Property"}
  Owner Load (0.3ms)  SELECT  "owners".* FROM "owners" WHERE "owners"."id" = ? ORDER BY "owners"."id" ASC LIMIT ?  [["id", 1], ["LIMIT", 1]]
  ↳ /Users/kensanchez/.rvm/gems/ruby-2.5.3/gems/activerecord-5.2.4.1/lib/active_record/log_subscriber.rb:98
Unpermitted parameter: :gym
<%= form_with(model: property, local: true) do |form| %>
    <% if property.errors.any? %>
        <div id="error_explanation">
            <h2><%= pluralize(property.errors.count, "error") %> prohibited this property from being saved:</h2>

            <ul>
                <% property.errors.full_messages.each do |message| %>
                    <li><%= message %></li>
                <% end %>
            </ul>
        </div>
    <% end %>

    <div class="container">
        <div class="field">
            <%= form.label :name %>
            <%= form.text_field :name %>
        </div>

        .
        .
        .
       <!--Gym attribute from amenities-->
        <div class="field">
            <%= form.label :gym %>
            <%= form.number_field :gym %>
        </div>

        <div class="actions">
            <%= form.submit %>
        </div>
    </div>
<% end %>
<!--Gym attribute from amenities-->
<%= form.fields_for :amenities do |amenities_form| %>
  <div class="field">
    <%= amenities_form.label :gym %>
    <%= amenities_form.number_field :gym %>
  </div>
<% end %>