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/.