Ruby On Rails - link_to创建错误的URL

时间:2015-03-28 23:32:41

标签: ruby-on-rails link-to

这里的基本帮助,但我是Ruby On Rails的新手。 Windows 7上的Rails版本4.1.7。

我希望看到为链接创建不同的网址。代码和问题描述如下。

感谢您的帮助!

-T

控制器:

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

    def lynda
        redirect_to("http://lynda.com")
    end
end

routes.rb中:

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

index.html.erb(&#39; /演示/索引&#39):

<h1>Demo#index</h1>
<p>Hello From Index</p>
<a href="/demo/hello">Hello Page 1</a><br />
<%= link_to( "Hello page 2c", {action: "hello" })%> <br />
<%= link_to("Hello with Parameters", {action:"hello", page: 5, id: 20}) %>

佣金路线:输出

前缀动词URI模式控制器#动作   root GET / demo #index        GET /:controller(/:action(:id))(.:format):控制器#:动作

来自index.html的结果来源:

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

<a href="/demo/hello">Hello Page 1</a><br />
<a href="/demo">Hello page 2c</a> <br />
<a href="/demo/hello20?page=5">Hello with Parameters</a>

问题:

我希望&#34; Hello页面2c&#34;链接到&#34; / demo / hello&#34;。

的href

我也期待&#34; Hello with Parameters&#34;链接到&#34; / demo / hello / 20?page = 5&#34;

不确定要进一步了解什么。

我尝试了不同的格式化link_to的方法,但它们都给出了相同的结果。

EX:

<%= link_to( "Hello page 2c", {:action => "hello" })%> <br />
<%= link_to("Hello with Parameters", {:action => "hello", page: 5, id: 20}) %><br />

<%= link_to "Hello page 2c", action: "hello" %> <br />
<%= link_to "Hello with Parameters", action: "hello", page: 5, id: 20 %><br />

<%= link_to( "Hello page 2c", {controller: "demo", action: "hello" })%> <br />
<%= link_to("Hello with Parameters", {controller: "demo", action:"hello", page: 5, id: 20}) %><br />

2 个答案:

答案 0 :(得分:1)

您正在以错误的方式使用rails路由。你不应该使用catch all route。为用户可用的每个控制器操作编写显式路由。您可以阅读有关路由here的更多信息。

答案 1 :(得分:-1)

尝试按如下方式编辑路线规则。

match ':controller(/:action(/:id))', :via => :get

由于