是否可以在Rails中更改URL中控制器的名称

时间:2012-12-06 05:00:25

标签: ruby-on-rails routing

我有一个控制器

 emppedes

当我想在网址中调用此内容时,我很高兴看到

localhost:3000/emppedes

并显示与其相关的全部内容。

但是我可以将此控制器与其他人在rails中的名称相匹配,这样当我点击它时我可以进入URL,如

localhost:3000/employees

无需更改控制器内部但在网址外部,您可以看到。 我的意思是我可以像

那样编码
 `emppedes will display as employees in URL.`

有可能吗?可能是我的问题很愚蠢,但我想知道是否可能。 在编辑我有两个发送两个不同的ID和控制器也为更新我必须发送两个ID。 对于编辑,我的代码就像

<%= link_to 'Edit', { :action => "edit",:id => @emppede.id,:ad => @id},:class=>"btn btn-success" %> |

因为我在控制器中有两个句柄 也用于更新

 @id= @emppede.ad

if @emppede.save
        format.html { redirect_to :action => :index, :id => @emppede.ad }
        format.json { render json: @emppede, status: :created, location: @emppede }

我如何发送两个参数:id和:ad都在rails path formate中? 因为我的控制器是这样的

def index
         @id = params[:id]
      @data = Emppede.where(:ad => @id)
    if @data.count > 0
      @data.each do |data|
        @ids= data.id
         end
      redirect_to :action => :show, :id => @ids, :ad => @id
     else
      redirect_to :action => :new, :id => @id
    end
  end

4 个答案:

答案 0 :(得分:6)

是的,您只需指定要用于任何给定资源的控制器:

resources :employees, :controller => "emppedes"

或者如果您更喜欢Ruby 1.9语法:

resources :employees, controller: "emppedes"

有关详细信息,请参阅Rails Guide: Routing

答案 1 :(得分:2)

您要做的是传递:路径选项

资源:employees,:path =&gt; “emppedes”

将所有路径引用替换为/ employees to / emppedes

请参阅:http://guides.rubyonrails.org/routing.html,第4.7节“翻译路径”

答案 2 :(得分:1)

您可以在routes.rb中使用以下内容进行查询

match '/employees/:id/:ad(.:format)' => 'emppedes#index', :via => :get, :as => :employees
resources :emppedes, :as => 'employees'

答案 3 :(得分:0)

尝试在初始化文件中使用变形

  ActiveSupport::Inflector.inflections do |inflect|
     inflect.irregular 'employees', 'emppedes'
  end