連載は初めてです。クライアント側でjQueryを使用してチェックボックスの配列をシリアル化し、非表示の要素に入れ、フォームを送信しました。サーバー側では、使用できる配列にデシリアライズしたいと考えています。これがクライアント側の私の文字列です。
someArray%5B%5D=value0&someArray%5B%5D=value1
Rails 3 では、次のような配列を取得したいと考えています。
["value0", "value1"]
ありがとう!
連載は初めてです。クライアント側でjQueryを使用してチェックボックスの配列をシリアル化し、非表示の要素に入れ、フォームを送信しました。サーバー側では、使用できる配列にデシリアライズしたいと考えています。これがクライアント側の私の文字列です。
someArray%5B%5D=value0&someArray%5B%5D=value1
Rails 3 では、次のような配列を取得したいと考えています。
["value0", "value1"]
ありがとう!
これらの値を一般的な投稿パラメーターとしてリクエストに送信すると、Rack はこれらの値を自動的に解析します。例えば:
curl http://yoursite.com -d "array[]=somevalue&array[]=othervalue"
これは、params[:array]
指定された値を持つ 2 つの要素を含むアプリケーション内で使用できるようになります。
シリアライゼーションのために私は何かを思いついたので、しばらくの間生産に取り掛かりました。3 つの異なるタイプのガジェットを備えた車のモデルがあるとします。(DBに3つのフィールドが必要ないと仮定しましょう):
あなたのデータベースでは、gadgets という名前のフィールドを TEXT にする必要があります (これは非常に重要です)。
Car.rbで
serialize :gadgets
attr_accessible :alarm, :ac, :tires
ALARM = 0;
AC = 1;
TIRES = 2;
# this is the getter for alarm
def has_alarm
if self.gadgets.nil?
return 0
else
if self.gadgets[ALARM].nil?
return 0
else
return self.gadgets[ALARM]
end
end
# this is the setter for alarm
def has_alarm=(value)
self.gadgets = Array.new if self.gadgets.nil?
self.gadgets[ALARM] = value
end
# getter
def has_ac
if self.gadgets.nil?
return 0
else
if self.gadgets[AC].nil?
return 0
else
return self.gadgets[AC]
end
end
# setter
def has_ac=(value)
self.gadgets = Array.new if self.gadgets.nil?
self.gadgets[AC] = value
end
...
あなたの _form.rb で
<%= f.check_box :has_alarm %> I want alarm in my car
<%= f.check_box :has_ac %> I want AC in my car
<%= f.check_box :has_tires %> I want deluxe tires in my car
後でこれらのフィールドで検索する必要がないことを願っています...