如何在Roda的视图中生成路径或网址?我需要使用插件吗?如果没有,怎么回事?或者我是否需要硬编码网址/路径?
在Rails中,我这样做:
viewWillTransition(to size:with coordinator:)
答案 0 :(得分:0)
由于link_to
是一个Rails助手,您可以做的是使用anchor
标记,并指定路由"手动"在href
属性中。
我假设你已经定义了你的App(/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文件,指定path
,methods
和路由name
,如:
# routes.json:
[{"path":"/","methods":["GET"],"name":"root"}]
现在,您可以使用listed_route
方法获取路线并与之合作。
在root.erb
中指定的/views
文件夹中创建render 'root'
文件,在其中您可以添加achor标记,并在href属性中打印listed_route
内容要求:root
路线的{1}}方法,例如:
<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"}]
答案 1 :(得分:0)
要仅基于设置的语义生成url,您需要path plugin。
用法看起来像这样:
App < Roda
plugin :path
path :post do |post|
"/blog/#{post.id}"
end
end
然后,在模板中,就像在Rails中使用something_path
一样:
<a href="<%= post_path(@post) %>" class="btn"><%= @post.title %></a>