2017-11-25 125 views
0

我是RoR的初學者。我必須開發一個輪詢發生器,所以我用'rails generate scaffold'命令創建了三個模型應用'Formulaire''Question'和'Reponse'。我無法創建我的表單來在同一視圖中生成我的投票,我想我已經在我的公式/ _form中提交了我的問題/ _form,但它不起作用。我試圖在我的form_for(@formulaire)中創建一個form_for(@formulaire)我的視圖formulaires/_form連接視圖和模型/ Ruby-RoR

那麼,如何連接我的三個模型並在同一視圖中創建三個實體?

謝謝

+0

請詳細說明_「它不工作」_。你嘗試了什麼?你有什麼問題?有沒有錯誤信息?請顯示你的代碼。 – spickermann

+0

問題是我必須創建帶有問題和解答的表單。我能夠在我的數據庫和問題中創建表單,但我不知道如何將每個表單連接到幾個問題。例如我用我的新方法在我的配方控制器中將用戶連接到我的Formulaire控制器中的「Form @ Formulaire = current_user.formulaires.new」。 – user9007028

回答

0

在Ruby on Rails的,提供給視圖(@something)類變量,在控制器的動作設定。所以說你有一個UsersController,有一個index行動。這通常會定義@users = User.all

在視圖app/views/users/index.html.erb中,您可以管理@users,或者在表格中顯示這些信息。

你的問題聽起來像是腳手架爲每個腳手架都創建了一個控制器,但是你想在同一視圖中管理它們嗎?在這裏你必須編輯控制器,通過初始化模型來找到這些模型。 @question = Question.newform_for(@question)

我建議您閱讀http://edgeguides.rubyonrails.org/getting_started.html第5章和第6章,以便對模型,表格和控制器有基本的瞭解。

編輯:

根據您在下面的回答,我認爲你應該使用.questions.build而不是。新。由於.questions將返回一個ActiveRecord::Collection據我記得,你會打電話給new這個。通過has_many關係創建新記錄的適當方法是.build。請參閱以下鏈接:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many

+0

謝謝你的幫助,它幫助了我,但我還沒有找到解決方案 – user9007028

+0

謝謝Frederik! – user9007028

0

在這種情況下,你可以不喜歡創建主模式叫Formulaire,那麼問題的模型,並回答模型和評論模型...

一個Formulaire將有許多問題(has_many)和一個問題會有一個或多個答案(has_one或has_many)。

通過Rails,控制器,視圖和模型需要一起操作。這意味着如果你想添加(或編輯)一個問題,那麼簡單的事情就是像apps/views/questions/_edit.html.erb。

你也可以做嵌套參數。

def formulaire_params 
    params.require(:formulaire).permit(
     : name, 
     : subject, 
     : instructions, 
     { questions: [:id, :description, :_destroy] }, 
     ... 
    ) 
end 

爲了顯示「formulaire」,通過你已經添加了mas_many和HAS_ONE關係(以及適當的範圍界定和授權),你會很容易能夠像做

<% @formulaire.questions.each do |question| %> 
    <span class=""><%= question.description %></span> 
    <% question.answers.each do |answer| %> 
    <span class=""><%= answer.owner.name %></span> 
    <span class=""><%= answer.description %></span> 
    <% end %> 
... 
<% end %> 
+0

謝謝米歇爾的回答。我做了你解釋的,但我有一個錯誤:在我的應用程序/ views/questions/_form.html.erb類 問題#新 未定義的方法問題爲零:NilClass – user9007028

+0

你可以發佈你的控制器公式和問題? –

0

我的 'formulaire控制器'

def new 
@formulaire = current_user.formulaires.new 
end 

我的觀點formulaire/_form

<%= form_for (@formulaire), html: {:multipart => true} do |f| %> 

我的問題控制器

def new 
@question = current_user.questions.new 
end 

我的觀點的問題/ _form

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

我「的form_for([@ formulaire,@ formulaire.questions.new])做嘗試| F | %> 但我有一個NoMethodError的問題#新

Ty。

+0

我更新了我的答案以適應新的信息。這應該工作。 –