2014-07-05 10 views
0

我試圖用一個f.submit提交兩個表單,但顯然<%end%妨礙了您的工作。 這個工程節能設計,但不是模型:立即提交兩個模型>爲模型(腳手架)設計+數據註冊

<%= form_for(@babysitter) do |f| %> 

Data fields Input for Model created with Scaffold 

<% end %> 

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 

Data fields Input for Devise 

<%= f.submit "Registrarse" %> 
<% end %> 

當我把他們有一項錯誤聲明出現並稱色器件輸入字段爲空的電子郵件地址和密碼的其他方式。

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 

Data fields Input for Devise 

<% end %> 

<%= form_for(@babysitter) do |f| %> 

Data fields Input for Model created with Scaffold 

<%= f.submit "Registrarse" %> 
<% end %> 

我很新的軌道,你可以看到,我知道是一個很基本的問題,但我只是不容圍繞它得到。 任何幫助都是好的

回答

0

您不能提交兩個模型,一個在rails中提交。您需要定義模型之間的關聯,並使用一個提交,這將自動填充兩個表中的表單數據。

設置你的模型像這樣:

class Survey < ActiveRecord::Base 
    has_one :question 
    has_many :answers 

    accepts_nested_attributes_for :question, :answers 
end 

class Question < ActiveRecord::Base 
    belongs_to :survey 
end 

class Answer < ActiveRecord::Base 
    belongs_to :survey 
end 

然後你就可以使用Rails助手這樣寫你的表格:

<%= form_for @survey do |form| %> 
    <%= form.fields_for :question do |question_form| %> 
    <%= question_form.text_field :question 
    <% end %> 
    <%= form.fields_for :answers do |answer_form| %> 
    <%= question_form.text_field :answer 
    <% end %> 
    <%= form.submit %> 
<% end %> 

在控制器的行動,將使你需要建立形式在內存中的新記錄是這樣的:

class SurveyController < ApplicationController 
    def new 
    @survey = Survey.new 
    @survey.build_question 
    @survey.answers.build 
    end 
end 

檢查此railscast它會給你一個bett呃主意: http://railscasts.com/episodes/196-nested-model-form-part-1