小编dav*_*tes的帖子

Rails路由中的变量

我已经搜索并尝试了http://guides.rubyonrails.org/routing.html中提到的许多不同的东西,但没有接缝来做我想要的.

要点:我有一个控制器,可以设置不同手机类型的视图

class PhoneViewsController < ApplicationController
  def android_automated
    #Do Android Stuff
  end
  def android_interactive
    #Do Android Stuff
  end
  def ios_automated
    #Do Apple Stuff
  end
  def ios_interactive
    #Do Apple Stuff
  end
  def blackberry_automated
    #Do Blackberry Stuff
  end
  def blackberry_interactive
    #Do Blackberry Stuff
  end
end
Run Code Online (Sandbox Code Playgroud)

上面的每个方法在phone_views视图文件夹中都有一个相应的视图部分

我希望像/ android/interactive这样的网址被读为phone_views#android_interactive

Rails路由具有允许我使用诸如的参数重定向的语法

 get 'android/:action', to: redirect('/phone_views/android_%{action}')
 get 'phone_views/:action' , :controller => 'phone_views'
Run Code Online (Sandbox Code Playgroud)

这呈现正确的页面,但具有时髦网址的令人讨厌的副作用

我试过这个并将其用作:

get 'android/:mode', :to => 'phone_views#android_%{mode}'
Run Code Online (Sandbox Code Playgroud)

但我得到一个动作%{mode}未找到错误,好像它没有看到%{mode}作为变量

get 'android/:action', :controller => 'phone_views', :action => 'android_%{action}'
Run Code Online (Sandbox Code Playgroud)

导致错误操作"交互式"找不到,并且:

get 'android/:mode', :controller => …
Run Code Online (Sandbox Code Playgroud)

variables routing ruby-on-rails

2
推荐指数
1
解决办法
779
查看次数

标签 统计

routing ×1

ruby-on-rails ×1

variables ×1