Rails使用哈希方法在链接的末尾添加“id”

时间:2016-01-01 21:09:42

标签: ruby-on-rails-4

“a href”按计划工作,但“Link_to”在“hello”动作的末尾添加了一个“id”,指示我演示/ helloid而不是demo / hello。请参阅下面的Rails .erb代码

<h1>Demo#index</h1>
<p>Hello From index!!</p>

<a href="/demo/hello">Hello page 1</a><br />

<%= link_to "Hello Page 2", ({ controller: "demo", action: "hello"}) %>

在查看HTML源代码时,它提供了以下内容

<h1>Demo#index</h1>
<p>Hello From index!!</p>

<a href="/demo/hello">Hello page 1</a><br />

<a href="/demo/helloid">Hello Page 2</a>

路线

 Rails.application.routes.draw do
  root "demo#index" 
  #get 'demo/index'
  match ':controller(/:action(id))', :via => :get

控制器

    class DemoController < ApplicationController

    layout false

    def index
    end

    def hello
        #render('hello')
        @array = [1,2,3,4,5]
    end

    def other_hello
        redirect_to(:controller => 'demo', :action => 'index')
    end

end

1 个答案:

答案 0 :(得分:0)

您的路线在以下行中不正确:

match ':controller(/:action(id))',   :via => :get   # Incorrect AND unnecessary

此外,此路由甚至不需要存在,因为Rails可以使用url_for方法为您执行此操作:

<%= link_to "Hello Page 2", url_for(controller: "demo", action: "hello") %>

只要路由中包含在routes.rb中指定的相应控制器/操作,就会生成该特定路由的URL。

> Read the Rails url_for Docs here