遇到一个问题。不知道是不是一文不值的。希望知道怎么解决的人帮忙看看。谢谢。
我知道默认的controller应该时当前的,而且我也添加了comment action 怎么会识别不了这个route呢?
不知道里面的源代码是怎么个回事。
环境:
netbeans
按照15分钟做blog的教程来做。但是到post的show中增加comment form的时候却提示 No route matches。
rails 2.1.1
mysql
[img]http://pic.yupoo.com/welleelin/1562864bb4b0/wy12a64f.jpg[/img]
[img]http://pic.yupoo.com/welleelin/9667864bb4b0/nt0o42c1.jpg[/img]
[b]问题补充:[/b]
ActionController::Routing::Routes.draw do |map|
map.resources :comments
map.root :controller => "posts"
map.resource :tags
map.resources :posts
end
[b]问题补充:[/b]
知道答案了!非常感谢qichunren和liuqiang,qubic 。
qichunren非常清楚地解释了这个问题。很感谢。
虽然liuqian更早提示了,但是当时我不明白为什么。
qichunren解释了问题的缘由。
不知道分数能否给两个人。
但是还是很感谢以上几个人。
这是因为在rails2.1中,使用scaffold生成的代码是rest形式的,默认只认那7个方法,如果你要在控制器中新加方法,就要在routes.rb中进行配置。
在config/routes.rb中添加路由:
[code="ruby"]map.resources :posts, :member => { :comment => :any }[/code]
[color=red] 而且我也添加了comment action [/color]
控制器是comment,action是show
把routes.rb内容贴出来
或者,在config/routes.rb中添加路由:
map.resources :posts, member => {:comment => :post}
视图为:
<% form_tag "/posts/#{@post.id}/comment" do%> <% end %>