如何添加编辑项目btn并仅在show动作中显示

时间:2014-01-22 15:40:13

标签: ruby-on-rails

如何在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'

2 个答案:

答案 0 :(得分:0)

假设您想要那样,您可以在视图中查看controller_namecontroller_action,这样您就可以在需要时隐藏/显示按钮。

您还可以从params哈希访问该信息。

使用该按钮时,如果未定义@project,则不会显示该按钮。

GL&amp; HF。

答案 1 :(得分:0)

您需要在控制器中定义edit操作。

def edit
  @project = Project.find(parmas[:id])
end

此外,在app/views/projects/edit.html下创建一个文件,因为控制器将查找相应的视图文件。

从导轨指南中阅读Action Controller,以便您更好地理解。