2016-01-01 57 views
1

「a href」按照計劃工作,但「Link_to」在「hello」動作的末尾添加了一個「id」,指示我演示/ helloid而不是demo/hello。見Rails的.erb下面Rails使用散列法在我的鏈接末尾添加了一個「id」

<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 
+0

你能提供'routes.rb'和控制器代碼? – Kkulikovskis

+0

請張貼您的路線文件 –

+0

也嘗試過這樣的例如。 'link_to「Profile」,{controller:「profiles」,action:「show」,id:@profile}' –

回答

0

你的路線在下面的lin上不正確E:

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

+0

我也會推薦閱讀關於在這裏的Rails路由http://guides.rubyonrails.org/routing.html TL; DR;將您的路線更改爲'get'/ demo/hello',以:'demo#hello'' – Semjon

+0

非常感謝 –

相關問題