Ruby on rails 如何创建模型的编辑/更新操作以在局部视图中显示
我目前有一个model:文件夹,它属于:user,并在用户登录时在主页上呈现每个文件夹。对于每个文件夹,都应该有一个“编辑”链接来更新文件夹的参数。以下是我到目前为止所拥有的内容(已经有了:folder的编辑表单): 在文件夹\u控制器中编辑/更新操作:Ruby on rails 如何创建模型的编辑/更新操作以在局部视图中显示,ruby-on-rails,Ruby On Rails,我目前有一个model:文件夹,它属于:user,并在用户登录时在主页上呈现每个文件夹。对于每个文件夹,都应该有一个“编辑”链接来更新文件夹的参数。以下是我到目前为止所拥有的内容(已经有了:folder的编辑表单): 在文件夹\u控制器中编辑/更新操作: def edit @folder = Folder.find(params[:id]) end def update @folder = Folder.find(params[:id]) if @folder.update_att
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
这就是我遇到的问题。这是在主页上呈现的:partial文件夹的一个片段:
<% if current_user?(folder.user) %>
<%= link_to "edit", edit_folder_path(@folder) %> |
<%= link_to "delete", folder, method: :delete,
data: { confirm: "You sure?" } %>
<% end %>
|
如果文件夹的当前用户已登录,则应显示“编辑和删除”链接。但是,我收到了以下错误:
ActionController::静态页面控制器主页中的UrlGenerationError
没有路由匹配{:action=>“edit”,:controller=>“folders”,:id=>nil}缺少必需的键:[:id]
但当我替换
<%= link_to "edit", edit_folder_path(@folder) %>
与
它渲染良好,但不更新。我怎样才能解决这个问题?我必须为我的主页控制器创建一个实例变量吗?如果是这样的话,我该怎么说呢?我想你有一个简单的打字错误。您应该使用
文件夹
,而不是@文件夹
。换言之:
<%= link_to "edit", edit_folder_path(folder) %>
@folder
变量不存在,因此出现了nil
错误消息。与您的问题无关,但在控制器中,您最好将folder.find
替换为当前用户.folders.find
,否则任何人都可以更新任何文件夹。
<%= link_to "edit", edit_folder_path(folder) %>