我很难弄清楚这个错误来自哪里...试图让用户选择更改我的Rails 5应用程序中的一些细节。代码正在运行,这是最令人沮丧的部分。它正在工作,它会更新数据库,但它也会抛出一个未定义的方法`[]'为零:NilClass"错误。
这在我看来:
<%= form_for @setting, url: {action: "new"} do |f| %>
<p>Site Name: <%= f.text_field :site_name %></p>
<p>City Name: <%= f.text_field :location %></p>
<%= f.submit %>
<% end %>
这是&#34;新&#34;控制器中的动作,相同的代码在&#34;更新&#34;以及:
def new
@settings = Setting.first
@settings.site_name = params[:setting][:site_name]
@settings.location = params[:setting][:location]
@settings.save
redirect_to admin_url
end
和更新控制器:
def update
@settings = Setting.first
@settings.site_name = params[:setting][:site_name]
@settings.location = params[:setting][:location]
@settings.save
redirect_to admin_url
end
我的数据库有一个设置表,其中包含&#34; site_name&#34;和&#34;位置&#34;作为两列。
这里有完整的错误:
NoMethodError in AdminController#new
undefined method `[]' for nil:NilClass
Extracted source (around line #29):
27 @settings = Setting.first
28
29 @settings.site_name = params[:setting][:site_name]
30 @settings.location = params[:setting][:location]
31 @settings.save
我在两个表单中输入的任何内容都会被添加到数据库中而不管错误如何,所以看起来代码工作正常,但它仍然会抛出错误。我错过了什么?
答案 0 :(得分:0)
我删除了我保存的各个设置,只是让表单发挥其魔力,这是我的“新”方法正常运行。
def new
@settings = Setting.first
respond_to do |format|
if @settings.save
format.html { redirect_to admin_url, notice: 'Setting was successfully changed.' }
format.json { render :show, status: :created, location: @settings }
else
format.html { render :new }
format.json { render json: @settings.errors, status: :unprocessable_entity }
end
end
end
仍然不确定为什么首先出现错误但只要它正常工作,我很高兴。