如何创建模型的编辑/更新操作以显示部分

时间:2015-06-26 00:48:50

标签: ruby-on-rails

我目前有一个模型:属于:user的文件夹,并在用户登录时呈现主页上的每个文件夹。对于每个文件夹,应该有一个“编辑”链接来更新文件夹的参数。这是我到目前为止(已经有一个编辑表格:文件夹):

在folders_controller中编辑/更新操作:

def edit
  @folder = Folder.find(params[:id])
end

def update
  @folder = Folder.find(params[:id])
  if @folder.update_attributes(folder_params)
    flash[:success] = "Folder updated"
    redirect_to root_url
  else
    render 'edit'
  end
end

这是我遇到问题的地方。这是在主页上呈现的:folder partial的片段:

<% if current_user?(folder.user) %>
  <%= link_to "edit", edit_folder_path(@folder) %> |
  <%= link_to "delete", folder, method: :delete,
                        data: { confirm: "You sure?" } %>
<% end %>

如果该文件夹的当前用户已登录,则应显示编辑和删除链接。但是,我收到此错误:

ActionPtroller :: VirtualPagesController中的UrlGenerationError #home

没有路由匹配{:action =&gt;“edit”,:controller =&gt;“folders”,:id =&gt; nil}缺少必需的密钥:[:id]

但是当我替换

<%= link_to "edit", edit_folder_path(@folder) %> 

<%= link_to "edit", edit_folder_path(id: 61 (or some random folder id) %> 

它渲染得很好,但没有更新。我怎样才能解决这个问题?我是否必须为我的主控制器创建一个实例变量?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

我认为你有一个简单的拼写错误。您应该使用@folder而不是folder。换句话说:

<%= link_to "edit", edit_folder_path(folder) %>

@folder变量不存在,因此出现nil错误消息。