I am displaying a bunch of records from a table called "assets". Next
to each record i have a checkbox. When this box is checked i want to be
able to save the id of the record into another table called
"flagged_assets". All I need is the ID, nothing else. Im struggling
with the logic to save to another table. I know how to do it if the
asset_id is already in the "flagged_assets" table.
# when flag_assets page is loaded
def flag_assets
@assets = Asset.find :all
end
# Called when Ajax form is submitted
def get_flagged
to_flag = params[:to_be_flagged]
if to_flag
to_flag.each do |asset_id, flag|
@assets = FlaggedAsset.find_all_by_asset_id(asset_id)
for asset in @assets
if flag == "yes"
asset.flag = 1
else
asset.flag = 0
end
asset.save!
end
end
end
render :text => "<p class=''success''>Assets
have been Flagged</p>"
end
def get_flagged
to_flag = params[:to_be_flagged]
if to_flag
to_flag.each do |asset_id, flag|
@assets = Test.find_all_by_asset_id(asset_id)
for asset in @assets
if flag == "yes"
asset.flag = 1
else
asset.flag = 0
end
asset.save!
end
end
end
render :text => "<p class=''success''>Assets
have been Flagged</p>"
end
--
Posted via http://www.ruby-forum.com/.
Adam
2006-Apr-24 20:23 UTC
[Rails] Re: Checkboxes - Saving a Checked record to another table
Please disregard the second def get_flagged method. Pasted by accident. -- Posted via http://www.ruby-forum.com/.
Bob
2006-Apr-24 20:56 UTC
[Rails] Re: Checkboxes - Saving a Checked record to another table
Adam wrote:> I am displaying a bunch of records from a table called "assets". Next > to each record i have a checkbox. When this box is checked i want to be > able to save the id of the record into another table called > "flagged_assets". All I need is the ID, nothing else. Im struggling > with the logic to save to another table. I know how to do it if the > asset_id is already in the "flagged_assets" table. > > # when flag_assets page is loaded > def flag_assets > @assets = Asset.find :all > end > > # Called when Ajax form is submitted > def get_flagged > > to_flag = params[:to_be_flagged] > > if to_flag > to_flag.each do |asset_id, flag| > @assets = FlaggedAsset.find_all_by_asset_id(asset_id) > for asset in @assets > if flag == "yes" > asset.flag = 1 > else > asset.flag = 0 > end > asset.save! > end > end > end > render :text => "<p class=''success''>Assets have been Flagged</p>" > end > > def get_flagged > > to_flag = params[:to_be_flagged] > > if to_flag > to_flag.each do |asset_id, flag| > @assets = Test.find_all_by_asset_id(asset_id) > for asset in @assets > if flag == "yes" > asset.flag = 1 > else > asset.flag = 0 > end > asset.save! > end > end > end > render :text => "<p class=''success''>Assets have been Flagged</p>" > endHi Adam,>From what I understand you want to only store the ID of those that arechecked into a new table. In this case why don?t you iterate through all the checked boxes in the hash and create a new FlaggedAsset object with the ID for each iteration? By the way, why don?t you put a flag column in the Asset table, instead of creating a new table? Bob -- Posted via http://www.ruby-forum.com/.