2015-06-30 138 views
3

我有一個項目模型。它的一個零售商店。無法在項目中編輯項目錯誤NoMethodError#編輯

當在一個項目視圖即時通訊。讓我們說物品ID 11.然後我點擊編輯按鈕。我收到以下錯誤

任何人都有任何線索?任何幫助將不勝感激。

NoMethodError in Items#edit 
undefined method `errors' for nil:NilClas 
<% if @user.errors.any? %> 
    <div id="error_explanation"> 
    <div class="alert alert-danger"> 
     The form contains <%= pluralize(@user.errors.count, "error") %>. 
    </div> 
    <ul> 

下面是我的編輯按鈕是在項目視圖

<!-- right column --> 
    <div class="col-lg-6 col-md-6 col-sm-5"> 
     <div class = "itemtitle"><%= @item.title %> </div> 
     <div class = "price">$<%= @item.price %> </div> 
     <%= link_to "Edit Items", edit_item_path(@item) %> 
     <div class="productFilter productFilterLook2"> 
      <div class="filterBox"> 
       <select> 
        <option value="strawberries" selected>Quantity</option> 
       </select> 
      </div> 

這裏是我的項目控制器。

class ItemsController < ApplicationController 

    def index 
    @items = Item.paginate(page: params[:page]) 
    end 

    def new 
    @item = Item.new 
    end 

    def edit 
    @item = Item.find(params[:id]) 
    end 

    def show 
    @item = Item.find(params[:id]) 
    end 

    def update 
    if @item.update(pin_params) 
     redirect_to @item, notice: 'Item was successfully updated.' 
    else 
     render action: 'edit' 
    end 
    end 

    def create 
    @item = current_user.items.build(item_params) 
    if @item.save 
     redirect_to @item 
     flash[:success] = "You have created a new item" 
    else 
     flash[:danger] = "Your item didn't save" 
     render "new" 
    end 
    end 

    def destroy 
    @item.destroy 
    respond_to do |format| 
     format.html { redirect_to items_url, notice: 'Item was successfully deleted' } 
     format.json { head :no_content } 
    end 
    end 

    private 

    def item_params 
     params.require(:item).permit(:title, :price, :description, :image) 
    end 

end 

_error_messages.html.erb

<% if @user.errors.any? %> 
    <div id="error_explanation"> 
    <div class="alert alert-danger"> 
     The form contains <%= pluralize(@user.errors.count, "error") %>. 
    </div> 
    <ul> 
    <% @user.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 

回答

2

你不要在你的edit行動定義@user

可能在模板的某個地方爲edit動作請求@user.errors.any?。要麼禁用此部分或修改爲類似@item.errors.any?

+0

我剛剛添加@user = User.find(params [:id])它。現在它可以工作。 瘋狂的事情是我之前由於某種原因沒有工作。現在所有好的 謝謝。 – joeyk16

+0

@ joeyk16對'Item'實例使用'@ user'對象沒有任何意義。使用'@ item.errors.any?' – Pavan

+0

@Pavan是的,我同意你的看法。我可以在我的_error_messages.html.erb中看到它。如果我改變@ item.errors.any?它會阻止其他工作。 – joeyk16