我有一个名为activities的控制器,它包含一些方法,例如updateweight,displaycalories等。
<ul>
<li><%= link_to "Home", "/" %></li>
<li><%= link_to "Update Weight", "/activities/upweight" %></li>
<li><%= link_to "Food Ressources", "/activities/food_res" %></li>
<li><%= link_to "Exercises Technics", "/activities/exercises" %></li>
</ul>
哪条路线能够到达活动控制器以及后面带有名称的方法?我尝试过ressources:活动,但是我得到了奇怪的结果。
感谢您的帮助
答案 0 :(得分:2)
要查找可用路由,请使用rails app目录命令行中的rake routes
命令。这将显示您可以用作链接的潜在路线列表。它们通常看起来像:
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
等...
在您的情况下,您正在制作非默认网址,因此您需要将它们添加到config/routes.rb
文件中。例如,添加:
get '/activities/upweight' => 'activities#upweight'
这会使用GET http请求将所选网址连接到您想要的正确控制器#操作。
另请注意,如果您使用行routes.rb
在resources :activities
中为活动控制器创建了路线,则需要确保添加上面的自定义路由线 他们这个。 resources :activities
用作自定义网址的全部内容,并将它们路由到控制器的show方法。
答案 1 :(得分:2)
处理控制器中的任何任意操作都是非RESTful的。很多旧的rails版本都是这样处理的:
match ':controller(/:action(/:id))(.:format)'
..事实上,今天Rails仍然可以实现。您应该注意不要在单个控制器中混合使用RESTful和任意操作,因为“create”和“delete”之类的操作不应该响应GET请求。
或者,您可以根据自己的资源推广“体重”,“食物”和“锻炼”。
此外,你显然不能拼写“资源”或“技术”,虽然我更喜欢运用一个技术的形象。
答案 2 :(得分:1)
在您的情况下,路线可能如下所示:
match "/activities/upweight", :as => "activities#upweight"
match "/activities/food_res", :as => "activities#food_res"
match "/activities/exercises", :as => "activities#exercises"
如果您的方法名为upweight
,food_res
,exercises