2017-05-09 17 views
0

我很難找出這個錯誤來自哪裏...試圖讓用戶選擇在我的Rails 5應用程序中更改一些細節。代碼正在工作,這是最令人沮喪的部分。它正在工作,它更新數據庫,但它也會拋出一個「未定義的方法`[]'nil:NilClass」錯誤。未定義的方法`[]'爲零: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 %> 

這裏是在控制器中的「新」的動作,同樣的代碼在「更新」以及:

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 

我的數據庫有一個設置表,其中「site_name」和「location」爲兩列。

以下是完整的錯誤:

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

你好,你能不能也發佈你的更新方法? – Jeremie

+0

它在哪一行發生錯誤? –

+0

是的,錯誤的完整痕跡將有所幫助 – Jeremie

回答

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 

不知道爲什麼有一個錯誤,但只要它工作,我很高興。

相關問題