【问题标题】:Has Many Nested form not saving to database有许多嵌套表单未保存到数据库
【发布时间】:2017-07-04 05:02:04
【问题描述】:

仍在学习 rails 并且已经坚持了一段时间,我觉得这是一个简单的解决方法,但我就是不明白。

我正在尝试使用单独的模型以另一个模型的形式填充下拉列表。所以是嵌套形式。它是在锻炼中完成的活动类型。

这是我设置的。

锻炼模型

class Workout < ActiveRecord::Base
  belongs_to :user
  has_many :activities
  accepts_nested_attributes_for :activities
  validates :activity, presence: true
end

锻炼控制器参数

def workout_params
      params.require(:workout).permit(:rating, :activity, :workout_date, :activity_id, activity_params:[:id, :title])
end

活动模型

class Activity < ActiveRecord::Base
  belongs_to :workout
end

活动控制器参数

def activity_params
   params.require(:activities).permit(:title, :rating, workout_params:[:id])
end

查看

<%= form_for(@workout) do |f| %>
     <div class="control-group">
       <%= f. label :activity, class: 'control-label' %>
     </div>
     <div class="checkbox">
       <%= collection_select( :activity, :workout_id, Activity.all, :id, :title, {}, 
     {:multiple => false }) %>
     </div>
     <div class="actions">
       <%= f.submit %>
     </div>
<% end %>

提前致谢

【问题讨论】:

  • 您是否尝试过活动的复数形式 => 形式中的“活动”。检查这个stackoverflow.com/questions/22284668/…
  • 是的。那没有用。选项在那里,但它没有保存。我更新了代码以反映这一点。感谢您的回答
  • 在提交表单时尝试创建新锻炼。该活动是空白的。

标签: ruby-on-rails-4 nested-forms


【解决方案1】:

修复它。错误出现在视图 > collection_select 中。订单错误,我将 :activity_id 更改为 :activity

 <%= collection_select :workout, :activity, Activity.all, :id, :title, {}, {:multiple => false } %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2021-08-13
    相关资源
    最近更新 更多