如何在Rails中将safe_html放到button_to中



我想在button_to中添加safe_html或原始html,以实现如下目的:

<%= link_to(raw("a <strong>strong</strong> link"),{:pics => true},{ :class => 'highlight'})  %>

我的按钮是这样的:

<%= button_to ("<div class='clock'></div>Start").html_safe, { action: :start, controller: "my_controller", id: my_model.id },
class: "btn", disabled: (my_model.is_active || !my_model.ended.nil?),
data: { "hx-post" => my_model_start_path(my_model.id), "hx-trigger" => "click", "hx-target" => "#my_model-block" } %>
<%= button_to raw("<div class='clock'></div>Start"), { action: :start, controller: "my_controller", id: my_model.id },
class: "btn", disabled: (my_model.is_active || !my_model.ended.nil?),
data: { "hx-post" => my_model_start_path(my_model.id), "hx-trigger" => "click", "hx-target" => "#my_model-block" } %>

以上代码都不起作用。是否有一种方法来添加html作为安全字符串在我的button_to形式?

你可以跳过所有的.html_safe.raw的东西通过传递一个块给button_to

https://apidock.com/rails/ActionView/Helpers/UrlHelper/button_to

我下面的代码可能不是100%正确,但应该给你一个如何写它的想法。

<%= button_to nil, { 
action: :start, 
controller: "my_controller", 
id: my_model.id, 
class: "btn", disabled: (my_model.is_active || !my_model.ended.nil?),
data: { 
"hx-post" => my_model_start_path(my_model.id), 
"hx-trigger" => "click", 
"hx-target" => "#my_model-block" }} do %>
<div class='clock'></div>Start
<% end %>

根据@tywhang的以下答案,我尝试了一下,得到了一个有趣的结果。

我想生成的是:

<form class="button_to" method="post" action="/some_model/end/6def4c28-3d-adcb-38804e33ec95?locale=en">
<input class="btn" disabled="disabled" data-hx-post="/some_model/end/6def4c28-f8104e33ec95?locale=en" data-hx-trigger="click" data-hx-target="#rental-block" type="submit" value="Start">
<input type="hidden" name="authenticity_token" value="cdawUeCFdaIBdawdaQ==">
</form>

value="Start"有一些html而不是"Start"

上面的代码生成的是:

<form class="button_to" method="post" action="/en/some_model/165634c-877c-6900123-123123-1d1fc307e">
<button action="stop" controller="some_model" id="6def4c28-f811-42adwa-31231fa-1233ec95" type="submit">
<div class='clock'></div>Start
</button>
<input type="hidden" name="authenticity_token" value="VXsdaiFwdaUQawd=aw=">
</form>

显然我丢失了所有的数据属性

(注释太长了)

最新更新