gpt4 book ai didi

ruby-on-rails - RoR - 脚手架 - 未定义的方法 'to_sym' for nil :NilClass only an error in the edit method

转载 作者:行者123 更新时间:2023-12-04 06:58:13 24 4
gpt4 key购买 nike

undefined method `to_sym' for nil:NilClass

我只在我的 nifty_scaffold 的编辑页面中有这个错误。

这是_form.html.erb
<% form_for @progress do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :date %><br />
<%= f.date_select :date %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p>
<%= f.label :weight %><br />
<%= f.text_field :weight %>
</p>
<p>
<%= f.label :fatpercentage %><br />
<%= f.text_field :fatpercentage %>
</p>
<p>
<%= f.label :height %><br />
<%= f.text_field :height %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>

这是edit.html.erb
 <% title "Edit Progress" %>
<%= render :partial => 'form' %>

这是我的 Controller :
class ProgressesController < ApplicationController
def new
@progress = Progress.new
end

def create
@progress = Progress.new(params[:progress])
if @progress.save
flash[:notice] = "Successfully created progress."
redirect_to progresses_url
else
render :action => 'new'
end
end

def edit
@progress = Progress.find(params[:id])
end

def update
@progress = Progress.find(params[:id])
if @progress.update_attributes(params[:progress])
flash[:notice] = "Successfully updated progress."
redirect_to progresses_url
else
render :action => 'edit'
end
end

def index
@progresses = Progress.all
end
end

可能有什么问题?我似乎找不到我的错误:-S。
似乎它:
- 正确获取数据
- 无法将 db 值插入“编辑 View ”字段。

我在脚手架中使用 :float、:string 和 :date 作为数据类型。

仅针对已完成的帖子,这是我的错误:
NoMethodError in Progresses#edit
Showing app/views/progresses/edit.html.erb where line #3 raised:

undefined method `to_sym' for nil:NilClass
Extracted source (around line #3):

1: <% title "Edit Progress" %>
2:
3: <% form_for @progress do |f| %>
4: <%= f.error_messages %>
5: <p>
6: <%= f.label :date %><br />

在第 6 行,代码日志结束......

编辑:
这似乎是我的 routes.rb 中的错误。
这是目前的评论:
 map.edit_progress "edit_progress", :controller => "progresses", :action => "edit"

当我取消注释它时,它也会在我的索引 View 中出现错误。

出于某种原因,这被称为:
' http://127.0.0.1:3001/progresses/1/edit ',不应该是:' http://127.0.0.1:3001/progresses/edit/1 ' ?
即使看起来“编辑 View ”被称为......也许这就是未填写值的原因,在我看来......

我的解决方案是什么?

最佳答案

我会在这里建议两步调试:

  • 从编辑 View 中删除所有代码并在其中添加一些纯文本,然后在浏览器中访问您的页面并查看是否出现任何错误或新错误或没有错误
  • 如果您遇到任何新错误,那么它可能会帮助您解决问题或在您的 Controller 编辑操作中引发 @progress 以查看它是否正在设置
    def edit
    @progress = Progress.find(params[:id])
    raise @progress.inspect
    end

  • 这两个步骤可能会帮助您解决问题。

    关于ruby-on-rails - RoR - 脚手架 - 未定义的方法 'to_sym' for nil :NilClass only an error in the edit method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2278261/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com