program story

Rails 3 / 모델이없는 양식 : 모델에 연결되지 않은 양식을 작성하려면 어떻게해야합니까?

inputbox 2020. 11. 7. 09:29
반응형

Rails 3 / 모델이없는 양식 : 모델에 연결되지 않은 양식을 작성하려면 어떻게해야합니까?


모델이 있고 해당 모델을 기반으로 새 개체를 만들기위한 양식을 표시하는보기가 있습니다. 이 양식을 Form1.

사용자가를 제출 Form1하면 객체가 생성됩니다. 그런 다음 다음 페이지에 Form2개체를 데이터베이스에 저장하기 전에 사용자에게 다양한 옵션을 선택하도록 요청 하는 두 번째 양식을 표시하고 싶습니다 .

내 문제는 아마도 매우 기본적인 것입니다. Form2모델에 직접 연결되어 있지 않기 때문에을 만드는 방법을 모르겠습니다 . 나는 Rails초보자 이기 때문에 다음과 같은 양식 만 만들었습니다.

form_for(@object) { |f| ... }

@object 모델에서 인스턴스화 된 객체입니다.

문제 : 나는 그런 종류의 코드가 여기서 내 목적에 맞을 것이라고 믿지 않는다. 또는 의 모델을 Form2기반으로하지 않아야하는데을 어떻게 생성 합니까?@object@object

내 앱의 몇 가지 세부 사항 :

사이트는 서버로 Form1리디렉션하기 전에 값 ( )을 허용 OAuth합니다.

사용자가 OAuth서버에서 자격 증명을 확인 하면 내 사이트로 다시 리디렉션됩니다. XML-RPC요청은 다음에 사용자의 계정에 대한 정보 검색 OAuth서버를.

XML응답은 사용자가에 하나의 계정 만이 나타낼 수 있습니다 OAuth서버. 그렇다면 일부 값이에서 검색되어 XML개체에 추가되고 (마지막으로) 데이터베이스에 저장되고 사용자는 성공 페이지로 리디렉션됩니다.

그러나 XML응답에 사용자가 OAuth서버 에 여러 계정이 있음을 나타내는 경우 사용자가 Form2OAuth 서버에서 내 사이트와 연결할 계정을 선택할 수 있는 양식 ( ) 을 표시하고 싶습니다 . 따라서 Form2실제로 사용자 에게 개체의 특정 속성보다는 생성 할 개체 수를 묻습니다 .


사용 form_tag대신은 form_for: 다음 적절한 폼 헬퍼를 사용하는 text_field_tag대신 f.text_field, text_area_tag대신 f.text_area등 예 :

<%= form_tag "/my_controller/update2" do %>
  <%= text_field_tag "account", "default info" %>
  <%= submit_tag "Save" %>
<% end %>

Rails API 사이트에는 모든 _tag 도우미에 대한 훌륭한 참조가 있습니다. http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html


rails3부터 유효성 검사가 ActiveRecord에서 분리되었으므로 양식 도우미를 사용하여 유효성 검사기로 사용할 수있는 바닐라 개체를 만들 수 있습니다.

 class Person
   include ActiveModel::Validations

   attr_accessor :first_name, :last_name

   validates_each :first_name, :last_name do |record, attr, value|
     record.errors.add attr, 'starts with z.' if value.to_s[0] == ?z
   end
 end

그런 다음 템플릿에서 :

<%= form_for(Person.new) do |f| %>
...

스키마에 연결된 모델 개체를 만들지 않고도 이메일 양식과 같은 항목에 대한 양식 도우미의 이점을 얻을 수있는 편리한 방법입니다.


테이블없는 모델을 만들려면

class Person
  include ActiveModel::Model

  attr_accessor :first_name, :last_name

  validates :first_name, :last_name, presence: true
end

그런 다음 귀하의 관점에서

<%= form_for(Person.new) do |f| %>
 .... your form ....
<% end %>

또 다른 유사한 솔루션은 Active-Model 에서 찾을 수 있습니다 RailsCasts.


SimpleForm을 사용하려는 경우 여기에 대한 구체적인 답변이 있습니다 . form_tag가 Simple_form에서 작동합니까?

참고 URL : https://stackoverflow.com/questions/4805774/rails-3-form-without-model-how-do-i-create-a-form-that-is-not-tied-to-a-model

반응형