刚开始接触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的链接,非常方便。
分享到:
相关推荐
= link_to “Issues”, {:controller => “issue”, :action => “index”}, {:onclick => “alert(1)”} %> 但是值得注意的就是,link_to 的第二个参数,必须是以 map 的形式给出,才能达到这样的效果。...
InspiniaAdmin 2.6.1 Rails_Full_Version
一个简单的gem,可以使用标准的Rails link_to helper在链接上实现活动状态。 这对导航列表或按钮有帮助,当当前URL匹配链接帮助器上的条件时,为他们提供一个类。 安装 将此行添加到您的应用程序的Gemfile中: gem...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
agile_web_development_with_rails_3rd_edition.9994652073.pdf
inspinia admin 2.5 中的 Rails_Full_Version
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
RestFul_Rails_Dev_v_0.1 RestFul_Rails_Dev_v_0.1
rails_best_practices ...默认情况下,rails_best_practices将解析vendor , spec , test和features目录中的代码。 排除目录 要排除目录,只需使用-e或--exclude调用: rails_best_practices -e "db/migrate
Rails_Recipes_with_Source_Code
ruby_on_rails_3_入门教程(中文)
Rails_3_Cheat_Sheets.pdf
LinkToAction 助手集:link_to_new,link_to_index,link_to_show,link_to_edit,link_to_destroy 额外帮手:link_to_back 启用了Twitter Bootstrap的演示应用程序源: 想要与一起使用此宝石吗? 提出。为什么Rails...
InspiniaAdmin 2.5 Rails_Seed_Project
在您的config/initializers/rails_admin.rb初始化程序中添加配置: RailsAdmin . config do | config | config . model Post do list do sort_by :position # Add Default sorting sort_reverse false # sort p
rails_plugins_presentation
InspiniaAdmin 2.5 Rails_full_version
清理代码,整个库现在在一个文件中,包含 Rails 2 和 Rails 3 的单独模块。 should_macros文件夹重命名为shoulda 。 0.5.0 的变化 在 0.5.0 之前的版本中,错误消息附加到定义验证的字段。 例如,如果验证在:relatio
安装将此行添加到应用程序的 Gemfile 中: gem 'rails_console_toolkit' 然后生成初始化程序: $ bin/rails generate rails_console_toolkit:install或手动编写: # config/initializers/console....
复杂Rails系统架构优化