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
서버 에 여러 계정이 있음을 나타내는 경우 사용자가 Form2
OAuth 서버에서 내 사이트와 연결할 계정을 선택할 수 있는 양식 ( ) 을 표시하고 싶습니다 . 따라서 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에서 작동합니까?
'program story' 카테고리의 다른 글
왜 'extern“C ++”'를 사용합니까? (0) | 2020.11.07 |
---|---|
하위 문자열 색인 범위 (0) | 2020.11.07 |
Python 2 print 문에 비해 Python 3.x의 새로운 인쇄 기능의 장점은 무엇입니까? (0) | 2020.11.07 |
TextView의 문자 수를 제한 할 수 있습니까? (0) | 2020.11.07 |
큰 xlsx 파일을 R로 가져 오시겠습니까? (0) | 2020.11.07 |