41

'Required'属性
をhtml入力フィールドに追加すると、Railsはラベルの前にアスタリスク(*)を付加します。

誰かがこれを防ぐ方法を知っていますか?

何らかの理由で、Railsはこれを変換します。

<%= f.input :Company, :input_html => {:value => "", :id => "company_name"}, :label => "company name" %>

これに:

<div class="input string required">
    <label for="company_name" class="string required">
    <abbr title="required">*</abbr> company name</label>
    <input type="text" value="" size="50" required="required" name="lead[Company]" id="company_name" class="string required">
</div>

すべてをDIVにラップし、パーティーにABBR要素を追加するのは好きではありません。

どうすればこれを防ぐことができますか?

4

11 に答える 11

49

simple_formのロケールファイルで必要なマークを空の値に設定するだけです。

en:
  simple_form:
    required:
      text: 'required'
      mark: '*'

または、CSSを使用して非表示にします。

于 2011-10-05T11:46:13.690 に答える
35

config / initializers / simple_form.rbに次の行を追加します:

config.label_text = lambda { |label, required| "#{label}" }
于 2013-01-02T19:03:26.917 に答える
22

Rails 3.1を使用しており、特定のモデルの_form.html.erbに次のビューコードがあります。

<div>
  <%= f.label :full_name %><br/>
  <%= f.text_field :full_name, :required => true %><br/>
</div>

このようにすると、ラベルにアスタリスクは表示されません。あなたがコードを投稿しない限り、私はあなたのアプローチが何であるか、そして私の解決策がそのアプローチに合うかどうか確信が持てません。

更新された回答:このコードを誰かから継承したようです。いずれにせよ、コードサンプルを読んだ後は、間違いなくsimple_formgemを使用しています。そのgemに関する情報は、https://github.com/plataformatec/simple_formにあります。ただし、質問に答えるために、コードを変更した場合は次のようになります。

<%= f.input :Company, :input_html => {:value => "", :id => "company_name"}, :label => "company name", :required => false %>

これでアスタリスクがオフになります。

simple_formから生成されたHTMLに対する嫌悪感に基づいて、gemを廃止し、Railsのデフォルトのフォームヘルパーを使用してフォームコードを書き直す必要があるようです。これについては、http://を参照してください。 guides.rubyonrails.org/form_helpers.html。コードベースのサイズによっては、時間を節約するために、それを吸い上げてsimple_form gemの使用方法を学ぶ方がよい場合もありますが、すべてを変更する時間があると思われる場合は、それを選択してください。

于 2011-10-04T16:32:36.200 に答える
15

最も簡単な方法は、このcssで非表示にすることです。

abbr[title="required"] {
  display: none;
}
于 2014-11-03T21:00:00.397 に答える
5

レールではありません。それはsimple_formの宝石です。したがって、すべてのラッピング要素が必要ない場合は、simple_formを使用しないでください。Railsフォームヘルパーを使用します。気に入らないものをカスタマイズするよりも簡単です。

于 2011-10-05T11:39:59.413 に答える
4

Formtasticを使用していてこの問題が発生している場合は、構成ファイル(通常はapp / config / initializers / formtastic.rb )を編集してアスタリスクを削除できます。

この行を変更します。# Formtastic::SemanticFormBuilder.required_string = "(required)"

することが:Formtastic::SemanticFormBuilder.required_string = ""

詳細はこちら

于 2013-05-31T20:05:51.100 に答える
3

アスタリスクの問題を解決するのに役立ったコード:

abbr[title="required"] {
  display: none;
}

選択した回答と、ロケールファイルdintのHTMLを変更するように求めるその他の提案は、最新のSimple_formgemを使用するのに役立ちます。

于 2015-01-30T10:50:34.113 に答える
2

受け入れられた回答で提案されたグローバル構成とは別にrequired: false、入力オプションとして渡すか、defaults: { required: false }フォーム全体に設定することができます。

于 2017-09-05T22:20:54.993 に答える
2

フォーム全体から削除できます。

<%= simple_form_for @form, defaults: { required: false } do |f| %>
于 2019-03-18T18:12:48.657 に答える
0

その後ろにあるアスタリスク(*)だけを削除したい場合は、このファイルに移動するだけでよいことがわかりました。file /config/locales/simple_form.en.yml

繰り返しになりますが、gemの構成ファイルや、何らかの理由で使用しているものを変更することはお勧めできません。なぜ本当にsimple_formを使用するのかという疑問が常にあります。

しかし、たとえば、私たちが使用するsimple_formには素晴らしいことがあるので、それを知りましたが、最近では、必須フィールドにアスタリスクを付けてから必須フィールドにアスタリスクを付ける方が使い勝手が良い方法です。

于 2012-10-18T09:22:39.157 に答える
0

次のように、を使用してメソッドをform_forオーバーライドし、必須フィールドにアスタリスクを追加できます。def labelconfig/initializer

def label(object_name, method, content_or_options = nil, options = nil, &block)
    if content_or_options.is_a?(Hash)

      content_or_options.each do |key, val|
        options[key] = val
      end

      content_or_options = method.to_s
    end

    content_or_options ||= method.to_s

    presence_validations = [ActiveModel::Validations::PresenceValidator, ActiveRecord::Validations::PresenceValidator]

    class_obj = options[:object].class if options[:object]
    class_obj ||= object_name.to_s.camelize.constantize

    validations = class_obj.validators_on(method.to_s).map(&:class)

    if (presence_validations.map { |pv| validations.include?(pv) }).any?
      content_or_options += "*"
    end

    Tags::Label.new(object_name, method, self, content_or_options, options).render(&block)
end

form_forこのメソッドは、通常を使用し、を使用した場合、すべての必須フィールドの後にアスタリスクを付けますvalidates_presence_of

于 2014-08-11T08:59:34.937 に答える