如何使链接标记起作用?

时间:2014-03-19 18:13:19

标签: ruby-on-rails ruby

我有两个名为list.html.erbregister.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

2 个答案:

答案 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 %>
相关问题