专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Ruby/Rails

访问地址页面出现异常No route matches "/MyTest" with {:method=>get}

发布时间:2011-06-29 18:42:46 文章来源:www.iduyao.cn 采编人员:星星草
访问地址页面出现错误No route matches "/MyTest" with {:method=>:get}
按照书上的示例,生成了一个 contraller MyTestController,但是在访问 http://127.0.0.1:3000/mytest 时 报错 No route matches "/MyTest" with {:method=>:get},不知道是什么原因。我的rials的版本是2.1.0,不知道这个问题和版本变化有没有关系,谢谢。

------解决方案--------------------
就是版本的问题。
http://www.javaeye.com/topic/162536

Recognizing the Environment



命名空间路由

好了,现在我们有一个骨瘦如柴的迷你博客像是模仿经典david在2005念做的一段15分钟创建一个BLOG的视频。现在我们更进一步:Post不应该让所有的人都可以去编辑他,我们的网站需要一个管理部分。让我们为它创建一个控制器:

./script/generate controller Admin::Posts

rails2.0 现在支持命名空间。他会创建一个子目录叫 app/controllers/admin.
我们所要作的是:
1.创建一个新的路由
2.把所有在旧的 posts控制器中的 action复制到新的 Admin::posts中
3.复制所有旧的posts视图到app/views/admin* ,在旧的posts 控制器中只留下 ‘index’和‘show’ 这两个action,
这意味着也要删除new 和 edit.
4.修改 我们刚刚复制的actions和views,让他能够知道他是在admin控制器中

首先,我们再次编辑 config/routes.rb:

Ruby代码 复制代码

1. map.namespace :admin do |admin|
2. admin.resources :posts
3. end

map.namespace :admin do |admin|
admin.resources :posts
end




这意味着我们现在有了带着 'admin'前缀的 posts的具名路由。这会使旧的POST路由和新的
admin post路由不会想混。像这样:

posts_path /posts
post_path(@post) /posts/:post_id
admin_posts_path /admin/posts
admin_post_path(@post) /admin/posts/:post_id

现在让我们从旧的POST控制器中拷贝ACTION并修改路由地址去适应新的命名空间:

Ruby代码 复制代码

1. # app/controllers/admin/posts_controller.rb
2. ...
3. def create
4. # old:
5. format.html { redirect_to(@post) }
6. # new:
7. format.html { redirect_to([:admin, @post]) }
8. end
9.
10. def update
11. # old:
12. format.html { redirect_to(@post) }
13. # new:
14. format.html { redirect_to([:admin, @post]) }
15. end
16.
17. def destroy
18. # old:
19. format.html { redirect_to(posts_url) }
20. # new:
21. format.html { redirect_to(admin_posts_url) }
22. end
23. ...

# app/controllers/admin/posts_controller.rb
...
def create
# old:
format.html { redirect_to(@post) }
# new:
format.html { redirect_to([:admin, @post]) }
end

def update
# old:
format.html { redirect_to(@post) }
# new:
format.html { redirect_to([:admin, @post]) }
end

def destroy
# old:
format.html { redirect_to(posts_url) }
# new:
format.html { redirect_to(admin_posts_url) }
end
...



不要忘记删除所有在app/controllers/posts_controller.rb中的方法,只要留下 ‘index’ 和‘show’两个方法。

现在,让我们拷贝视图(假设你的 shell已经在项目的根文件夹下):
cp app/views/posts/*.erb app/views/admin/posts
rm app/views/posts/new.html.erb
rm app/views/posts/edit.html.erb

现在让我们编辑 app/views/admin/posts中的视图:

Ruby代码 复制代码

1. <!-- app/views/admin/posts/edit.html.erb -->
2. <h1>Editing post</h1>
3.
4. <%= error_messages_for :post %>
5.
6. <% form_for([:admin, @post]) do |f| %>
7. ...
8. <% end %>
9.
10. <%= link_to 'Show', [:admin, @post] %> |
11. <%= link_to 'Back', admin_posts_path %>

<!-- app/views/admin/posts/edit.html.erb -->
<h1>Editing post</h1>

<%= error_messages_for :post %>

<% form_for([:admin, @post]) do |f| %>
 ...
<% end %>

<%= link_to 'Show', [:admin, @post] %> |
<%= link_to 'Back', admin_posts_path %>




Ruby代码 复制代码

1. <!-- app/views/admin/posts/new.html.erb -->
2. <h1>New post</h1>
3.
4. <%= error_messages_for :post %>
5.
6. <% form_for([:admin, @post]) do |f| %>
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: