Ruby on rails 路由到新操作(Rails)
我的PostsController中有一个名为“taged”的操作,我希望返回所有带有任何术语的标记的帖子 在my routes.rb中,我有以下内容(在顶部): 但导航到POST/tagged/yes返回RecordNotFound错误: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
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 }