未知操作无法找到MicropostsController的操作“show”

时间:2012-01-08 17:04:53

标签: ruby-on-rails

继迈克尔·哈特尔的Rails Tutorial不断构建我们的示例应用程序,并且当前没有在MicropostsController中定义“show”时,我们应该在MicropostsController或我们的MVC框架中的任何其他位置插入什么代码来修复此错误?

当我们点击“删除”我们Feed中的微博时,我们得到“未知操作无法找到MicropostsController的动作'show'错误。

class MicropostsController < ApplicationController
  before_filter :authenticate, :only => [:create, :destroy]

  def create
    @micropost = current_user.microposts.build(params[:micropost])
    if @micropost.save
      flash[:success] = "Micropost created!"
      redirect_to root_path
    else
      @feed_items = []
      render 'pages/home'
    end
  end

  def destroy
      @micropost.destroy
      redirect_back_or root_path
    end
 end

2 个答案:

答案 0 :(得分:0)

请确认您已包含jquery_ujs.js。 检查你的application.js并确保“// = require jquery_ujs”存在。

答案 1 :(得分:0)

这种情况正在发生,因为您的浏览器中的JavaScript被禁用(通过脚本块f.i.),或者像SeasonHuang已经写过的那样,jquery_ujs.js没有正确加载。 如果你调用rake routes,你会看到类似的内容:

GET  /microposts/:id  Microposts#show
DELETE  /microposts/:id  Microposts#destroy

所以展示和销毁的路径是一样的。它们在HTTP方法上有所不同。但由于HTML表单无法发送DELETE请求,我们必须使用JavaScrip。如果没有它,你将发出GET请求以显示尚未在控制器中定义的方法。