Ruby on Rails: button_to, link_to

I have this piece of code:

  <%= link_to "New User", new_user_path, :class => "button"  %><br />

which works fine, but when I change it to,

<%= button_to "New User", new_user_path, :class => "button"  %><br />

I get this error No route matches [POST] "/users/new"

Any help at all will be appreciated. Thanks

EDIT:

<%= button_to "New User", new_user_path, :class => "button", :method => :get  %><br />



3 Answers

Jesus Rodriguez is right about POST and GET, but if you really need the button you can simply override the default method:

<%= button_to "New User", new_user_path, :class => "button", :method => :get  %>


   
   

The "link_to" is looking for a /users/new using GET.

The "button_to" is looking for a /users/new using POST

If you create the routes for a controller using:

resources :user

By default, /users/new is a GET and not POST so, the second line doesn't find any route.

If you are thinking to change that action to POST I think that you should forget about it.


button_to defaults to POST, and link_to defaults to GET, this is why links_to worked. You can force button_to to use GET:

<%= button_to "New User", new_user_path, :class => "button", :method => :get %>

You can get more information about button_to options here: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值