2012-12-16 43 views
0

我正在绑定对我的嵌套模型之一执行编辑操作。我不断收到以下错误“未定义的方法`model_name'为NilClass:类”Rails中嵌套模型编辑页面的错误

我不知道发生了什么事。任何帮助?

路线

resources :users, :except => [ :create, :new ] do 
    resources :store do 
     get "inbox", :on => :collection 
     get "openedmessages", :on => :collection 
    end 
    end 

存储操作

def edit 
    @store = current_user.store.id 
    end 

    def create 
    @store = current_user.store.new(params[:store]) 
    end 

    def update 
    @stores = current_user.store.id 
    if @stores.update_attributes 
     flash[:success] = "Store has been updated" 
     render 'edit' 
    else 
     render 'edit' 
    end 
    end 

信息查看编辑操作在商店

<ul class="storedashboard_header"> 
    <li><%= link_to "Manage Gear", user_store_index_path(current_user) %></li> 
    <li><%= link_to "Store Appearance", edit_user_store_path(current_user, @store) %></li> 
    <li><%= link_to "Announcements", '#' %></li> 
</ul> 
    <%= render "users/userdashboard_header" %> 
    <%= render "store/storemenu" %> 
    <div style="clear:both"></div> 
    <% flash.each do |name, msg| %> 
     <div class="alert alert-success"> 
     <a class="close" data-dismiss="alert">×</a> 
     <%= msg %> 
     </div> 
    <% end %> 
    <div> 
     <%= simple_form_for @stores, :html => {:multipart => true, :class => 'form-horizontal'} do |f| %> 
      </br> 
      <div style="float: left;"> 
      <%= f.input :storename %> 
      <%= f.input :storeimage %> 
      <%= f.input :storelogo %> 
      <%= f.button :submit, class: 'btn btn-large', style: 'margin-left: 40px;' %> 
      </div> 
     <% end %> 
    </div> 

修订

改变了我的控制器以下几点:0x007fec93b97238>

决赛:

def edit 
    @store = Store.find(current_user.store.id) 
    end 

    def create 
    @store = current_user.store.new(params[:store]) 
    end 

    def update 
    @store = Store.find(current_user.store.id) 
    if @store.update_attributes(params[:store]) 
     flash[:success] = "Store has been updated" 
     render 'edit' 
    else 
     render 'edit' 
    end 
    end 

新的错误更新

未定义的方法`的#<#store_path”后FIX

所需解决的观点...

<%= simple_form_for [current_user, @store], :html => {:multipart => true, :class => 'form-horizontal'} do |f| %> 

回答

1

如果我理解正确你的问题:

@store需要为模型商店,而不是仅仅标识的对象。

类似: @store = Store.find(current_user.store.id)将返回

+0

我做你的建议的修改,现在我得到一个新的错误,我更新我的上述问题的对象。未定义的方法'store_path'为#<#:0x007fec93b97238> – DaveG

+0

更改视图,它工作...谢谢! – DaveG