2011-10-17 57 views
0

我正在學習rails,並且正在構建一個迷你投票應用程序作爲學習工具。我知道我可以手動創建的形式,但是當我想建立單選按鈕的形式,我很困惑,如何做到這一點:使我的投票代碼選擇如下:如何從數據庫的數據創建無線電輸入作爲與手寫表單一致的數據?

def show 
    @poll = Poll.find(params[:id]) 
end 

# show.html.erb - this is where I want to render the radio buttons/form 
<h2><%= @poll.question %></h2> 
<ul id="choices"> 
    <% @poll.choices.each do |choice| %> 
    <li> 
     <%= choice.choice %> &rarr; 
    </li> 
    <% end %> 
</ul> 

我的模型很簡單:

class Poll < ActiveRecord::Base 
    has_many :choices, :dependent => :delete_all 
    validates :question, :presence => true 
end 

class Choice < ActiveRecord::Base 
    belongs_to :poll 
    validates :choice, :presence => true 
end 

我的問題是如何建立一個基於上述單選按鈕的窗體?基本上我希望我的選票欄在提交這個表單時遞增1,我可以處理,但我的困惑是如何構建這個表單,任何人都可以幫助我嗎?

感謝

  • 傑夫
+0

很難回答,但沒有看到您的型號代碼。提示:請閱讀http://guides.rubyonrails.org/form_helpers.html – Thilo

+0

感謝Thilo,我用更多信息更新了我的問題。現在閱讀這些文檔。 – JeffC

+0

使用simple_form - https://github.com/plataformatec/simple_form –

回答

1

隨着外的開箱導軌形式的幫手,這樣的事情應該工作(未測試):

<%= form_for(@poll) do |f| %> 
    <% @poll.choices.each do |choice| %> 
    <%= radio_button_tag :chosen_id, choice.id %> <%= choice.choice %> 
    <% end %> 
<% end %> 

然後在update方法PollsController,根據params[:chosen_id]的值進行型號更新。

這不是最優雅的方式來做到這一點,但缺乏關於您的模型的更多信息,它應該足以讓你開始。順便說一句,這是非常基本的Rails的東西。我建議你閱讀Rails form helpers的基礎知識,然後或許看看nested forms(我的例子不是),也可以使用一些簡化表單處理的寶石,例如simple_form,正如Michael Durrant在評論中提出的那樣。

+0

對不起thilo,我忘了標記這個答案,謝謝你的迴應! – JeffC

相關問題