ruby-on-rails:通过路径和link_to传递参数
发布时间:2020-12-17 01:23:09 所属栏目:百科 来源:网络整理
导读:我有一个名字路线: map.up_vote 'up_vote',:controller = 'rep',:action = 'up_vote 但up_vote需要传递两个参数,postID和posterID,我似乎无法想象如何在部分中做到这一点,但在集成测试中我没有问题. 部分: link_to 'Up Vote',up_vote_path,{:postID = sess
我有一个名字路线:
map.up_vote 'up_vote',:controller => 'rep',:action => 'up_vote 但up_vote需要传递两个参数,postID和posterID,我似乎无法想象如何在部分中做到这一点,但在集成测试中我没有问题. 部分: link_to 'Up Vote',up_vote_path,{:postID => session[:user_post_id],:postersID => session[:poster_id]} 整合测试: post up_vote_path,{:postID => @latest.id,:postersID => users(:bob).id} (this works ok) 1)部分内容是怎么回事? 2)我可以对我的测试做些什么改变才能抓住这个? 解决方法
一个问题:为什么要在链接中传递会话变量?您可以直接从会话中获取它们……
我不知道是否有任何特殊原因:会话中有user_post_id和:poster_id,但我建议你做两件事: 1)在网址中传递你的变量,会话可能是邪恶的(尝试在你的浏览器上回击,刷新和转发) 2)在URL /控制器动作逻辑中使用资源. 示例(仅在我说得对,你投票给用户的帖子时才有效): 路线: map.resources :users do |user| user.resources :posts do |post| post.resource :vote end end 所以你可以有这个网址: /users/:id/posts/:post_id/vote 和链接路径: link_to "Up",user_post_vote_path(@user,@post),:method => :create 我使用@user和@post而不是整数,因为路径方法接受它们,你可以用以下代码构建一个更短的版本: link_to "Up",[@user,@post,:vote] # or [:vote,@user] 实现: class VoteController .... def create # do your stuff here end end 这样它将更容易和RESTful. Ryan Bates获得了great episode的资源,绝对值得一看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |