我有两个名为list.html.erb
和register.html.erb
的文件。
我点击了链接
<%= link_to 'Lists',posts_list_path %>
但我没有得到任何回应。点击我希望转到list.html.erb
页面的链接。
routes.rb:
resources :posts
post '/posts/list',:controller=>'posts',:action=>'list'
post '/posts/register',:controller=>'posts',:action=>'register'
register.html.erb:
<h1>Welcome#index</h1>
<%= link_to 'Lists',posts_list_path %>
Started GET "/posts/list" for 127.0.0.1 at 2014-03-20 00:08:27 +0530
Processing by PostsController#show as HTML Parameters: {"id"=>"list"}
Rendered posts/register.html.erb within layouts/application (1.0ms)
Completed 200 OK in 106ms (Views: 88.0ms | ActiveRecord: 0.0ms) [2014-03-20 00:08:27]
WARN Could not determine content-length of response body.
Set content-length of the response or set Response#chunked = true
答案 0 :(得分:0)
将路线更改为
get '/posts/list',:controller=>'posts',:action=>'list'
get '/posts/register',:controller=>'posts',:action=>'register'
resources :posts
点击<%= link_to 'Lists',posts_list_path %>
链接时
link_to
将以posts/list
的形式发送GET请求。
这就是为什么你需要一个GET请求而不是POST。
此外,两个额外的get
路由应该在resources :posts
之前
Rails会将其映射到
GET /posts/:id(.:format) posts#show
如果您查看日志,您会发现请求将转到PostsController#show
。
Rails会引导您进入第一条匹配路线。在get
之前添加额外的resources :posts
路由,以便正确映射路由。
答案 1 :(得分:0)
您要做的是通过POST
发出link_to
请求。如果你真的想这样做,link_to
应该是:
<%= link_to 'Lists',posts_list_path,method: :post %>