“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
答案 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。