2017-10-08 139 views

回答

0

由于link_to是Rails帮手,你可以做的是使用anchor标签,以及href属性中的“手动”指定路线。

我假设你已经定义了你的应用(/app.rb)类。

为了让您的路线,你可以使用roda-route_list插件,(有一个插件像往常一样)添加它,也加入render插件,并指定引擎 - 在这种情况下,雇员再培训局,我认为是更容易和更快:

class App < Roda 
    plugin :route_list 
    plugin :render, engine: 'erb' 

在创建第一个路由之后,您必须在其上面添加一个注释,指定名称,方法,URI和/或参数等......在这种情况下,只是响应GET请求的根路径:

# route[root]: GET/
request.root do 
    render 'root' 
end 

这是# route[root]: GET /

  • route:关键字路由,需要定义它们。
  • [root]:路由的名称 - 如Rails的alias选项。
  • GET:HTTP动词。
  • /: URI。

您可以看到更多here。然后你可以使用roda-parse_routes可执行文件生成与app.rb文件中定义的路由JSON文件:

$ roda-parse_routes -f routes.json app.rb 

这应该给你一个JSON文件中指定pathmethods和路由name,如:

# routes.json: 
[{"path":"/","methods":["GET"],"name":"root"}] 

现在您可以使用listed_route方法获取您的路线并与之一起工作。

创建/views文件夹内的root.erb文件,如render 'root'规定和里面可以添加亚割标签,并在href属性中,打印listed_route方法的内容要求的:root路线,如:

<a href="<%= listed_route(:root) %>">Root</a> 

现在,您可以在您的视图中访问您的路线。尽管重定向到同一条路线不作太多的感觉,那么你就可以创建一个新的路线,只是得到一个在request.root后,如:

# route[hello]: GET /hello 
request.get 'hello' do 
    @greeting = 'hello world' 
    render 'hello' 
end 

它期望渲染hello ERB文件,使得可用一个@greeting实例变量。因此,在此文件中,您可以传递根路由并检查@greeting变量是否成功。

<a href="<%= listed_route(:root) %>">Root</a> 
<%= @greeting %> 

不要忘了再次运行roda-parse_routes命令来生成新路由。你应该看到类似的东西:

[{"path":"/","methods":["GET"],"name":"root"},{"path":"/hello","methods":["GET"],"name":"hello"}]