2011-04-26 28 views
0

我正在使用acts_as_followers,并想知道我可以传递给link_to:remote => true链接的路径,以便用户可以关注各种不同的实体。如何创建一个路径在轨道3中创建追随者?

以下是我在路由(通过耙路由)

遵循
/users/follow/:followed_type/:followed_id(.:format) {:控制器=> “用户” , :动作=> “follow_this”}

这是在routes.rb中:

match 'users/follow/:followed_type/:followed_id' => 'users#follow_this', :as => "follow" 

但我不清楚如何使用路径助手将值传递到URL字符串?我需要将字符串作为字符串(例如“供应商”)和:id ...但我该怎么做?

这是我可以让用户按下链接,它会调用此操作并创建以下关系。

46 def follows_this 
47 
48  followed_type = params[:followed_type] 
49  followed_class = class_type.camelize.constantize 
50  followed = followed_class.find(params[:followed_id]) 
51  current_user.follow(followed) #uses acts_as_follower plugin 
52 
53 end 

回答

2
put '/users/follow/:followed_type/:followed_id' => 'users#follow_this', :as => "follow" 

使用

<%= link_to "Follow White Rabbit", follow_path(:followed_type => "some type", :followed_id => "some_id"), :method => :put %> 

match意味着你可以调用任何请求:GET,POST,PUT或DELETE。所以最好指定一个你想使用的。至于你更新一些数据 - 使用PUT,如果你正在创建一些数据 - POST,如果你删除 - DELETE,如果你只是取 - GET

+0

我看....我没有使用get - - 这是做什么,让我试试! – Angela 2011-04-26 20:43:40

+0

我用'匹配'...嗯......两者有什么区别? – Angela 2011-04-26 20:44:20

+0

@floor - 我得到了一个错误:(没有路由匹配{:follow_type =>“Vendor”,:follow_id => 1,:action =>“follow_this”,:controller =>“users”} – Angela 2011-04-26 20:46:08