如何在application.html.erb中添加编辑项目按钮并仅在show action中显示?
projects_controller.rb
class ProjectsController < ApplicationController
def show
@project = Project.find(params[:id])
end
end
application.html.erb
<!DOCTYPE html>
<html>
<head>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<nav>
<%= link_to 'Edit Project', edit_project_path(@project), class: 'btn' %>
</nav>
<%= yield %>
</body>
</html>
错误
ActionController::RoutingError (No route matches {:action=>"edit", :controller=>"projects", :id=>nil}):
app/views/shared/_nav.html.erb:17:in `_app_views_shared__nav_html_erb__1271203285425734977_70214901149120'
app/views/layouts/application.html.erb:16:in `_app_views_layouts_application_html_erb___2967596751769284574_70214923607360'
答案 0 :(得分:0)
假设您想要那样,您可以在视图中查看controller_name
和controller_action
,这样您就可以在需要时隐藏/显示按钮。
您还可以从params
哈希访问该信息。
使用该按钮时,如果未定义@project
,则不会显示该按钮。
GL&amp; HF。
答案 1 :(得分:0)
您需要在控制器中定义edit
操作。
def edit
@project = Project.find(parmas[:id])
end
此外,在app/views/projects/edit.html
下创建一个文件,因为控制器将查找相应的视图文件。
从导轨指南中阅读Action Controller,以便您更好地理解。