복붙노트

[RUBY-ON-RAILS] 대한없이 SimpleForm (비 모델 양식)

RUBY-ON-RAILS

대한없이 SimpleForm (비 모델 양식)

모델없이 : 그것은 (Plataformatec에 의해) 간단한 양식을 사용할 수 있습니까?

https://github.com/plataformatec/simple_form

해결법

  1. ==============================

    1.당신은 사용할 수 있습니다 : 기호를 첫 번째 인수로.

    당신은 사용할 수 있습니다 : 기호를 첫 번째 인수로.

    <%= simple_form_for :user, url: users_path do |f| %>
      <%= f.input :name, as: :string %>
      ...
    <% end %>
    

    이 같은이를 출력 뭔가 :

    <form novalidate="novalidate" class="simple_form user" action="/users" accept-charset="UTF-8" method="post">
      ...
      <div class="input string required user_name">
        <label class="string required" for="user_name">
          <abbr title="required">*</abbr> Name
        </label>
        <input class="string required" type="text" name="user[name]" id="user_name" />
      </div>
      ...
    </form>
    
  2. ==============================

    2.불행하게도 simple_form는 모델을 사용에 의존한다. 본질적으로 그들의 레일 * _tag 도우미에 해당 simple_form_tag 및 INPUT_TAG 방법 같은 것을 가지고 좋을 것이다. 그때까지, 쉬운 작업 주위에있다.

    불행하게도 simple_form는 모델을 사용에 의존한다. 본질적으로 그들의 레일 * _tag 도우미에 해당 simple_form_tag 및 INPUT_TAG 방법 같은 것을 가지고 좋을 것이다. 그때까지, 쉬운 작업 주위에있다.

    대신 형식의 클래스의 기호를 사용하여 모델 속성에 액세스하려고에서 simple_form을 방지하기 위해 명시 적으로 값을 전달합니다.

    <%= simple_form_for :user, :url => '/users' do |f| %>
      <%= f.text_field :name, input_html: { value: nil } %>
    <% end %>
    

    이것은 사용자 오류에 대한 정의되지 않은 메서드 '이름'을 방지 할 수 있습니다.

  3. ==============================

    3.당신은 또한이 같은 simple_fields_for으로, 양식 모델 내에서 모델 이외의 필드를 사용할 수 있습니다 :

    당신은 또한이 같은 simple_fields_for으로, 양식 모델 내에서 모델 이외의 필드를 사용할 수 있습니다 :

    <%= simple_form_for @user do |f| %>
      <%= f.input :name %>
    
      <%= simple_fields_for :no_model_fields do |n| %>
        <%= n.input :other_field %>
      <% end %>
    <% end %>
    

    당신이 다른 모델의 필드 또는 사용하여 모델이없는 다른 종류를 만들 수 있기 때문에, 간단하고 실용적인 솔루션입니다

  4. ==============================

    4.당신은 또한을 전달할 수 : 기호 대신 @object을 simple_form_for에 대한 인수로.

    당신은 또한을 전달할 수 : 기호 대신 @object을 simple_form_for에 대한 인수로.

    <%= simple_form_for :email, :url => '/post_email' do |f| %>
      <%= f.input :subject, :as => :string %>
    <% end %>
    

    어떤 출력 할 것이다 :

    <form method="post" class="simple_form email" action="/post_email" accept-charset="UTF-8">
      ...
      <input type="text" size="30" name="email[subject]" id="email_subject">
    </form>
    

    무승부 - 백업을 다음 사항에 유의하시기 바랍니다 :

  5. ==============================

    5.모든 메소드는 위의 여전히 폼 데이터와 함께 "사용자"또는 당신이 무엇을 첫 번째 인수로 전달할 것을 상징의 중첩 된 내부를 떠날. 그거 짜증나네.

    모든 메소드는 위의 여전히 폼 데이터와 함께 "사용자"또는 당신이 무엇을 첫 번째 인수로 전달할 것을 상징의 중첩 된 내부를 떠날. 그거 짜증나네.

    모방 simple_form의 스타일 / 혜택을하지만, 객체 / 기호 의존성 및 강제 데이터 중첩을 제거, 당신은 부분을 만들 수 있습니다.

    HAML 예 :

    폼보기 :

    = form_tag("path/to/action", method: "POST") do
        = render "path/to/partial/field", type: "string", required: true, item: "first_name"
    

    일부 필드 :

    - required_string = required ? "required" : ""
    %div{class: "input #{type} #{required_string} #{item}"}
      %label{class: "#{type} #{required_string}", for: "#{item}"}
        - if required
          %abbr{title: "required"}
            *
        = t("application.#{item}")
      %input{name: "#{item}",                                                     |
        placeholder: t("application.#{item}"),                                    |
        type: "#{type}",                                                          |
        required: required,                                                       |
        "aria-required" => "#{required}" }
    
  6. from https://stackoverflow.com/questions/5181143/simpleform-without-for-non-model-form by cc-by-sa and MIT license