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

reg*_*rem 1 routing ruby-on-rails

我有一个控制器

 emppedes
Run Code Online (Sandbox Code Playgroud)

当我想在url中调用这个时,它很好

localhost:3000/emppedes
Run Code Online (Sandbox Code Playgroud)

并且显示与其相关的整个内容.

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

localhost:3000/employees
Run Code Online (Sandbox Code Playgroud)

没有更改内部控制器但在url外部你可以看到.我的意思是我能在某处编码

 `emppedes will display as employees in URL.`
Run Code Online (Sandbox Code Playgroud)

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

<%= link_to 'Edit', { :action => "edit",:id => @emppede.id,:ad => @id},:class=>"btn btn-success" %> |
Run Code Online (Sandbox Code Playgroud)

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

 @id= @emppede.ad

if @emppede.save
        format.html { redirect_to :action => :index, :id => @emppede.ad }
        format.json { render json: @emppede, status: :created, location: @emppede }
Run Code Online (Sandbox Code Playgroud)

我如何发送两个参数: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
Run Code Online (Sandbox Code Playgroud)

小智 6

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

resources :employees, :controller => "emppedes"
Run Code Online (Sandbox Code Playgroud)

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

resources :employees, controller: "emppedes"
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅Rails指南:路由.