我需要將check_box_tag轉換爲f.check_box,但我在這樣做時遇到了麻煩。將check_box_tag轉換爲f.check_box時遇到麻煩 - RoR
我複選框有
check_box_tag 'privacy', 1, (@idea.privacy=='private'), :id=>"Make Private"
所以當(@ idea.privacy == '私')爲真名= '隱私',值= 1,檢查,並具有ID 「爲私人」 。誰能幫我?謝謝!
我需要將check_box_tag轉換爲f.check_box,但我在這樣做時遇到了麻煩。將check_box_tag轉換爲f.check_box時遇到麻煩 - RoR
我複選框有
check_box_tag 'privacy', 1, (@idea.privacy=='private'), :id=>"Make Private"
所以當(@ idea.privacy == '私')爲真名= '隱私',值= 1,檢查,並具有ID 「爲私人」 。誰能幫我?謝謝!
您可能想要添加一個虛擬屬性來執行此操作。
例如,在app/models/idea.rb
:
class Idea < ActiveRecord::Base
attr_accessor :is_private
def is_private
privacy == 'private'
end
def is_private=(true_or_false)
self.privacy = true_or_false ? 'private' : 'public'
end
end
它可以在形式使用這樣的:
<%= form_for(@idea) do |f| %>
<%= f.check_box :is_private %>
<%= f.submit %>
<% end %>
我建議下列導軌的慣例,並使用所生成的ID複選框:idea_is_private
。
如果你打算在不同的方式來命名,這裏是你如何能做到這一點:
<%= f.check_box :is_private, :id => 'make-private' %>
附:大多數人不會在ID中使用空格。
ps.s.s.虛擬屬性如何工作:
f.check_box :is_private
通知應該使用哪些方法讀取和寫入記錄的Rails。在這種情況下,複選框的值將是@idea.is_private
。而且,當檢查checobox時,像@idea.is_private = true
這樣的代碼被執行。
要做到這一點,我們必須在模型中添加is_private
和is_private=(true_or_false)
方法。
感謝您的意見。你能向我解釋模型中發生了什麼嗎?謝謝! – BooBailey
@BooBailey由於解釋有點長,我已將它更新到答案的末尾。請看一下。 :) – Domon