rails下的link_to 和相应的路由配置
刚开始接触rails,做活动通的项目,遇到的问题很多,大概遇到问题我会看书或者上网查阅相关资料,如果能直接通过这些方式直接得到答案,那当然最好,有的问题却不只单单通过查资料而直接得到答案的,需要自己学习、模仿、总结、理解后,才能解决。这里,我就说说我遇到的rails下的link_to和路由配置问题。
首先是link_to,问题是这样的,管理员在服务器端登录活动通后,进入用户管理页面,页面已列表的形式显示出所有的用户,管理员可以修改任意的某一用户的信息,后者删除某一用户。如果link_to只是单纯跳页面的话,只用:
=link_to 'name', 'url'
但是,这样并没有传递任何的参数,换句话说,点了link_to并不知道,你所要删除或修改的是哪一个用户。
解决的办法是,删除:
=link_to '删除',u, :method=>:delete,data:{confirm:'Are you sure?'}
这样使用了rails内置的delete方法,但同时要配置路由:
match 'user/delete/:id' =>'user#destroy',:via=>:delete,:as =>'user'
这时,一点link_to就把url里写的:id,即用户id传过去了。自定义一个destroy方法,在destroy方法里面利用传过来的用户id,调用方法是params[:id]再删除相应的用户就可以了。
修改的话就类似了,首先要配置路由:get 'user/show/:id/admin_modify_password_page' => 'admin#admin_modify_password_page',:as=>admin
页面上:
=link_to '修改密码', admin_url(id:u.id)这样就把相应要修改的用户id作为params传递给下一个页面或方法了。
最后总结link_to用法有:
link_to 'name', 'url' link_to 'name', user_url(id:id) rails内置方法如delete等 link_to 'name', user(id),:method=>:delete, :data=>{:params=>value} link_to 'name' , user_path(:id=>id) link_to 'name' , :style=>'style' , :class=> 'class' 如果不同的controlller link_to 'name' ,:controller=>'admin',:action=>'index',:param=>value
后来上网查了一些英文的官方文档,link_to还有link_to_if、link_to_unless、link_to_unless_current,这些可以控制如当前用户是退出、未登录状态不能操作,或者在index页面显示information链接,在information页面显示index的链接,非常方便。
相关推荐
wl00 2020-10-28
EricNet 2020-07-05
EricNet 2020-05-27
何志文 2020-05-11
JOO 2020-04-26
happyfreeangel 2020-04-09
Poisedflw 2020-03-23
yangliuhbhd 2020-03-06
Ben的程序员生涯 2013-06-01
chenshuixian 2013-06-01
wes0 2014-05-31
mrice00 2019-12-20
EricNet 2019-12-11
89304896 2019-12-08
lihaoningxia 2013-07-09
userguanguan 2015-03-16