Rails中使用fields_for出现undefined method `model_name'错误求助
Rails fields_for 触发NoMethodError(model_name不存在)的解决方案
修正fields_for的调用写法
你当前用的form.fields_for(model: rql)是错误的,Rails会把{model: rql}这个哈希当作处理对象,而非rql实例,这就是报错的根源。正确写法分两种情况:- 如果是针对父模型的关联集合(比如RealSegment的
real_quote_lines),且rql是该集合里的实例:<%= form.fields_for :real_quote_lines, rql do |line_form| %> - 如果是让Rails自动遍历关联集合里的所有实例,直接写:
<%= form.fields_for :real_quote_lines do |line_form| %>
- 如果是针对父模型的关联集合(比如RealSegment的
确认嵌套属性配置无误
先检查父模型RealSegment的嵌套属性设置:class RealSegment < ApplicationRecord has_many :real_quote_lines, dependent: :destroy accepts_nested_attributes_for :real_quote_lines, allow_destroy: true end再确保控制器的强参数允许嵌套字段(根据你的实际字段调整):
def real_segment_params params.require(:real_segment).permit( # 这里加父模型的其他参数 real_quote_lines_attributes: [:id, :your_field_name, :_destroy] ) end验证实例关联的正确性
确认rql是当前表单对象(RealSegment实例)关联的RealQuoteLine,而非游离实例。可以在视图里加调试代码确认:<%= debug rql.real_segment_id == form.object.id %> # 应该返回true排查参数传递问题
提交表单后,在控制器的update动作里打印参数,确认嵌套字段是否正确传递:def update puts params[:real_segment][:real_quote_lines_attributes] # 控制台查看参数结构 # 后续更新逻辑 end
内容的提问来源于stack exchange,提问作者Fernando Flores
相关产品推荐
相关产品推荐

