[英]Passing params to the controller rails
我有几个链接:
<%= link_to "", '../captures#photos' %>
<%= link_to "", '../captures#videos' %>
<%= link_to "", '../captures#audios' %>
他们传递给captures_controller.rb
如何解析参数(照片/视频/音频),使其不会在控制器中建立索引?
当前在控制器中,我有:
def photos
logger.debug 'photos'
end
def videos
logger.debug 'videos'
end
def audios
logger.debug 'audios'
end
def index
logger.debug 'index'
end
但是以下所有网址都记录“索引”?
route.rb:
# these were when I was trying the links without the hashes
match 'captures/photos' => 'captures#photos'
match 'captures/videos' => 'captures#videos'
match 'captures/audios' => 'captures#audios'
resources :captures
resources :photos
resources :audios
resources :videos
在rails 4.0中,您可以通过控制器中的GET请求附加和传递属性。
这在很大程度上取决于您在routes.rb
文件中定义的路由,但是无论您如何不能将哈希部分( #
之后的任何内容)用作路由的一部分。 实际上,浏览器甚至都不会将其发送到服务器。 您最有可能希望您的网址看起来像:
../captures
../captures/photos
../captures/videos
../captures/audios
通常,最好不要在此类的link_to
函数中指定您的URL。 您想使用路由助手功能来提供它们,以防您的路由发生更改。
我建议阅读Ruby on Rails Routes指南 。 这将为如何使用Rails内置的功能提供最大的洞察力,从而使您的路线获得最大收益。
在routes.rb中 :
get "/captures/:format"
无论使用哪种captures_controller.rb方法,都需要使用以下命令:
@format = params[:format]
然后,在相关视图中的任何位置@format
将输出photos
, videos
或audios
。
您无需在link_to
使用controller#action
表示法。 您必须给它一个路径,例如/captures/photos
或明确指定一些参数。 尝试这个:
<%= link_to "", :controller => "captures", :action => "photos" %>
我也将在routes.rb中这样做以简化操作:
resources :captures
get :photos
get :photo_booths
get :videos
get :audios
end
这将使您做到这一点:
<%= link_to "", photos_captures_path %>
最后,纯粹基于您显示给我们的有限代码,实际上听起来您应该拥有名为photos
, audios
等的资源 ,每个资源都有其自己的控制器,方法是使用“捕获”作为名称空间并为每种类型分别设置控制器:
namespace :captures do
resources :photos
resources :photo_booths
#etc
end
然后,每个操作都有一个index
操作,该操作可提供控制器中每个方法的当前功能。 然后您的链接如下所示:
<%= link_to "", captures_photos_path %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.