我有这条线:
<%= button_to 'Post', newpost_path(:type => 'short_note') %>
输出:
<form method="post" action="/posts/newpost?type=short_note" class="button-to"><div><input type="submit" value="Add" /></div></form>;
但是我需要输出有单引号,而不是双引号。我怎么能这样做?
<form method='post' action='/posts/newpost?type=short_note' class='button-to'><div><input type='submit' value='Add' /></div></form>;
答案 0 :(得分:1)
试试这个:
<%= (button_to 'Post', newpost_path(:type => 'short_note')).gsub('"', '\'') %>
答案 1 :(得分:1)
在 rails_root / lib 中创建名为 url_helper_overrides.rb 的文件,该文件只会覆盖按钮方法。或者您可以将下面的button_to方法添加到您的application_helper中。这个方法直接取自UrlHelper source in Rails (Github Link),我只是用单引号替换双引号。
module ActionView
module Helpers
module UrlHelper
def button_to(name, options = {}, html_options = {})
html_options = html_options.stringify_keys
convert_boolean_attributes!(html_options, %w( disabled ))
method_tag = ''
if (method = html_options.delete('method')) && %w{put delete}.include?(method.to_s)
method_tag = tag('input', :type => 'hidden', :name => '_method', :value => method.to_s)
end
form_method = method.to_s == 'get' ? 'get' : 'post'
remote = html_options.delete('remote')
request_token_tag = ''
if form_method == 'post' && protect_against_forgery?
request_token_tag = tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token)
end
url = options.is_a?(String) ? options : self.url_for(options)
name ||= url
html_options = convert_options_to_data_attributes(options, html_options)
html_options.merge!("type" => "submit", "value" => name)
("<form method='#{form_method}' action='#{html_escape(url)}' #{"data-remote='true'" if remote} class='button_to'><div>" +
method_tag + tag("input", html_options) + request_token_tag + "</div></form>").html_safe
end
end
end
end
答案 2 :(得分:0)
我认为唯一的方法是gsub(/"/, "'")
,但这真的很丑陋