경우에 따라 모델 생성없이 양식이 필요합니다 (예 : 검색 필드 또는 전자 메일). 일부 지침을 보내야하는 경우가 있습니다. 이 양식을 만드는 가장 좋은 방법은 무엇입니까? 가상 모델이나 이와 비슷한 것을 만들 수 있습니까? formtastic을 사용하고 싶습니다만 form_tag는 사용하지 마십시오.가상 모델 및 form_for (또는 formtastic)
답변
첫째, Formtastic은 모든 모델에서 모델을 필요로하지 않습니다. 물론 가장 잘 작동하고 모델을 사용하는 코드가 적습니다.
레일즈 자신의 form_for
과 마찬가지로, 첫 번째 인수로 객체 대신 심볼을 전달할 수 있으며 Formtastic은 양식을 작성하고 심볼을 기반으로 매개 변수를 게시합니다. 예를 들면 :
<% semantic_form_for(:session) do |f| %>
...
<% end %>
이 params[:session]
로 컨트롤러에 양식 값을 사용할 수있게됩니다.
두 번째로 모델은 ActiveRecord 모델을 의미하지 않습니다. 제 말은 Formtastic이 의 돌연변이가 ActiveRecord 모델처럼 인 클래스의 모든 인스턴스에서 작동한다는 것입니다.
이 예는 많은 사람들이 Authlogic을 사용하여 Formtastic 인증을 사용하고 있습니다. Authlogic의 일부는 잘 작동하는 사용자 세션 모델의 생각이다 :
컨트롤러 :
def index
@user_session = UserSession.new
end
형태 :
<% semantic_form_for(@user_session) do |f| %>
<%= f.input :login %>
<%= f.input :password %>
<% end %>
이 params[:user_session]
같은 컨트롤러에서 양식 데이터를 사용할 수 있습니다.
정말로 모델 인스턴스를 작성하여 모델의 문제를 마무리하기가 어렵지 않습니다. Formtastic이 작동 할 때까지 계속 기대하는 방법을 계속 구현하십시오!
또는 form_for를 사용하여 양식을 만들고 모델 참조를 비워두면됩니다. [: some_attribute] 컨트롤러에 간단히 말 PARAMS에 의해 <% form_for "", :url=>some_url do |f| %>
<%= f.text_field "some_attribute" %>
<%= submit_tag "submit" %>
당신은 값을 가져올 수 있습니다 예를 에 대한 .
아래 투표에 대한 의견을 보내 주시면 감사하겠습니다. – Sid
나는 OP가 시맨틱 솔루션을 찾고 이상적으로 Formtastic을 사용하고 있기 때문에 그것이라고 말하고 싶습니다. –
default_language.rb
class DefaultLanguage attr_accessor :language_id end
foo_controller.rb I의 값이 변경 될 때 형태를 게시 AJAX 사용
<% semantic_form_for @default_language do |form| %> <% form.inputs :id => 'default_language' do %> <%= form.input :id, :as => :select, :collection => @languages, :required => false, :label => "Primary Language:", :include_blank => false %> <% end %> <% end %>
def index @default_language = params[:default_language] || Language.find_by_name("English") end
index.erb.
나는 당신의 도전을 받아들입니다!여기에서는 ActiveRecord가 아닌 클래스를 찾아 "모델의 문제를 마무리합니다." http://dondoh.tumblr.com/post/4142258573/formtastic-without-activerecord – dondo