gpt4 book ai didi

ruby-on-rails - 带 rails 的 Handlebars / mustache url_for

转载 作者:行者123 更新时间:2023-12-03 15:51:34 26 4
gpt4 key购买 nike

我正在尝试使用带有 {{id}} 的命名路由作为参数之一,允许 Handlebars 使用渲染的内容。 url_for正在转义参数,因此生成的 url 包含 %7B%7Bid%7D%7D .我试过添加 :escape => false到调用,但它没有效果。

路由文件

resources :rants, :except => [:show] do
post '/votes/:vote', :controller => 'votes', :action => 'create', :as => 'vote'
end

索引.haml
%script{:id => 'vote_template', :type => 'text/x-handlebars-template'}
.votes
= link_to 'up', rant_vote_path(:rant_id => '{{id}}', :vote => 'up')
%span {{votes}}
= link_to 'down', rant_vote_path(:rant_id => '{{id}}', :vote => 'down')

应用程序.js
var vote_template =  Handlebars.compile($('#vote_template').html());

输出
<script id="vote_template" type="text/x-handlebars-template">
<div class='votes'>
<a href="/rants/%7B%7Bid%7D%7D/votes/up">up</a>
<span>{{votes}}</span>
<a href="/rants/%7B%7Bid%7D%7D/votes/down">down</a>
</div>
</script>

为便于阅读,我简化了示例,但问题保持不变;有什么方法可以使用带有 {{ }} 的命名路由吗?作为参数?我知道我可以做 link_to 'up', '/rants/{{id}}/votes/up'所以请不要提供它作为答案。

最佳答案

问题是 mustache 字符在 URL 中无效并且正在被转义。我建议创建一个包装器。

def handlebar_path(helper, arguments={})
send("#{helper}_path", arguments).gsub(/%7B%7B(.+)%7D%7D/) do
"{{#{$1}}}"
end
end

handlebar_path :rant_vote, :rant_id => '{{id}}', :vote => 'up'

关于ruby-on-rails - 带 rails 的 Handlebars / mustache url_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com