Ruby on rails 路由到新操作(Rails)

Ruby on rails 路由到新操作(Rails),ruby-on-rails,Ruby On Rails,我的PostsController中有一个名为“taged”的操作,我希望返回所有带有任何术语的标记的帖子 在my routes.rb中,我有以下内容(在顶部): 但导航到POST/tagged/yes返回RecordNotFound错误: Couldn't find Post without an ID 在我的taged.html.erb文件中,我最终将使用acts_as_taggable_on_steroids中的find_taged_with方法,但现在我已经发布了一个简单的Post.f

我的PostsController中有一个名为“taged”的操作,我希望返回所有带有任何术语的标记的帖子

在my routes.rb中,我有以下内容(在顶部):

但导航到POST/tagged/yes返回RecordNotFound错误:

Couldn't find Post without an ID
在我的taged.html.erb文件中,我最终将使用acts_as_taggable_on_steroids中的find_taged_with方法,但现在我已经发布了一个简单的Post.find(:all)来消除出错的可能性


似乎我的map.connect被覆盖了,即使我注释掉了所有routes.rb文件(除了我的新行),也会发生同样的错误。

好,因为您可以注释掉默认路由,这意味着您的问题根本不在路由中。这是因为您在posts控制器中标记的操作可能有类似的内容

  def tagged
    @post = Post.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @post }
    end
  end
或者,如果你花多一点时间,它看起来是这样的:

  def tagged
    @post = Post.find(params[:tagged])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @post }
    end
  end
您想要的是:

  def tagged
    @post = Post.find(:all, :conditions => {:tagged => params[:tagged]})

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @post }
    end
  end

无论如何,您应该为这些东西编写功能测试,而不是在浏览器中进行测试

为什么不为“标记”操作添加RESTful路由

  def tagged
    @post = Post.find(:all, :conditions => {:tagged => params[:tagged]})

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @post }
    end
  end
map.resources :posts, :member => { :tagged => :put }