2013-10-02 99 views
0

我有兩個模型:QuestionnaireResult和QuestionnaireOption。連接提交到單個數組/字段的多個字段

選項是動態的。

QuestionnaireResult有兩列:date_submitted和結果。我想要的結果列是某種的QuestionnaireOption和其價值的數組...

option_id/value 
1/50 
2/false 
3/true 

我提交使用這種形式的數據,但它是不完整的,不工作,因爲我不知道什麼樣的名字給text_fields (undefined method 'not_sure_what_to_name_this' for #<Admin::QuestionnaireResult:0x4a5ef9>):

<%= form_for(@questionnaire_result) do |f| %> 
    <% if @questionnaire_result.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@questionnaire_result.errors.count, "error") %> prohibited this questionnaire_result from being saved:</h2> 

     <ul> 
     <% @questionnaire_result.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <% @questionnaire_options.each do |questionnaire_option| %> 
     <% if questionnaire_option.field_type == 'Textbox' %> 
      <div class="field"> 
       <%= f.label questionnaire_option.option %><br /> 
       <%= f.text_field :not_sure_what_to_name_this %> 
      </div> 
     <% elsif questionnaire_option.field_type == 'Checkbox' %> 
      <div class="field"> 
       <%= f.label questionnaire_option.option %><br /> 
       <%= f.check_box :not_sure_what_to_name_this %> 
      </div> 
     <% end %> 
    <% end %> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

我告訴她什麼名字text_field,如何去保存結果和一列中存儲它們作爲一個數組?或者有更好的方法來解決這個問題?

+0

您需要更多幫助嗎? –

回答

0

退房this reference,在那裏說:

2.2綁定表到對象

雖然這是在舒適性增長是遠遠不夠完善。如果人員 有許多屬性要編輯,那麼我們會多次重複編輯對象的名稱。我們想要做的是以某種方式將一個表單綁定到 模型對象,這正是form_for所做的。

它繼續展示示例並詳細討論討論。因此,您在form_for中使用的字段是該模型的字段。要顯示一個例子,在:

<%= form_for Feed.new, id: "feed_add" do |f| %> 
    <%= f.submit "Add Feed", class: 'formlabel' %> 
    <%= f.text_field :feed_url, class: 'forminput', :autocomplete => :off %> 
<% end %> 

模型是飼料和text_field是:FEED_URL,所以這個更新Feed.feed_url。它在params [:feed] ['feed_url']中返回給控制器。

如果你能展示你的模型,我可以進一步建議。

爲了跟進您的問題的其他部分,「我該如何去保存結果並將它們作爲數組存儲在列中?還是有更好的方法來解決這個問題?」,這有點不同。

如果你想要做的是構建一個數組,你可能想使用form_tag而不是form_for。 form_for專門用於模型。 form_tag是對象不一定是模型的更一般化的接口。你可以在相同的reference中看到。舉例來說:

<%= form_tag feeds_path, method: 'get', id: "feed_search" do %> 
    <%= submit_tag " Search ", feed_url: nil, class: 'formlabel' %> 
    <%= text_field_tag :search, params[:search], class: 'forminput', :autocomplete => :off %> 
<% end %> 

這裏,搜索的值在params [:search]中返回。

關於如何做到這一點,您應該將此信息返回給您的控制器,以便它可以處理它。視圖用於顯示。控制器可以輕鬆構建和處理陣列,以便在決策和/或路由中使用。

+0

這是否對您有幫助?你有更多的問題嗎? –

+0

道歉的時間來審查這一點,這是完美的。感謝您的好意和幫助! –