gpt4 book ai didi

mysql - 如何删除 Rails 中使用 collection_select 保存的记录?

转载 作者:行者123 更新时间:2023-11-30 01:17:15 25 4
gpt4 key购买 nike

我的目标是当从 collection_select 中取消选择项目时能够更新已保存的记录(然后重新提交该记录)。提前感谢您的帮助!

详细信息

我有一份 Newsavedmaps 表格。新闻保存的 map 可以有许多航点。用户可以在collection_select中选择航点,当他们保存Newsavedmap时,这些航点将被保存到他们自己的数据库表中。

问题:当用户打开他们保存的新闻保存 map 时,我希望他们能够取消选择航路点。当他们再次保存 Newsavedmap 时,我希望删除取消选择的航点。

这是我正在维护的 Rails 2.3X 应用程序,这就是 collection_select 使用下面不同格式的原因。

型号

class Newsavedmap < ActiveRecord::Base
belongs_to :itinerary
has_many :waypoints, :dependent => :destroy
accepts_nested_attributes_for :waypoints, :reject_if => lambda { |a| a[:waypointaddress].blank? }, :allow_destroy => true
end

查看

    <% form_for @newsavedmap, :html => { :id => 'createaMap' } do |f| %>
<%= f.error_messages %>
<%= f.text_field :name, {:id=>"savemap_name", :size=>30 }%></p>

<%= collection_select :waypoints, :waypointaddress, @newsavedmap.waypoints, :waypointaddress, :waypointaddress, {}, { :multiple => true, :class => "mobile-waypoints-remove", :id =>"waypoints" } %>

<% end %>

Newsavedmaps Controller

def create
@newsavedmap = Newsavedmap.new(params[:newsavedmap])
waypoint = @newsavedmap.waypoints.build

respond_to do |format|
if @newsavedmap.save
flash[:notice] = 'The new map was successfully created.'
format.html { redirect_to "MYURL"}
format.xml { render :xml => @newsavedmap, :status => :created, :location => @newsavedmap }
else
format.html { render :action => "new" }
format.xml { render :xml => @newsavedmap.errors, :status => :unprocessable_entity }
end
end
end


def update
@newsavedmap = Newsavedmap.find(params[:id])

if @newsavedmap.itinerary.user_id == current_user.id
respond_to do |format|
if @newsavedmap.update_attributes(params[:newsavedmap])
flash[:notice] = 'Newsavedmap was successfully updated.'
format.html { redirect_to "MYURL" }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @newsavedmap.errors, :status => :unprocessable_entity }
end
end
else
redirect_to '/'
end
end

创建新记录时的参数

参数:{“newsavedmap”=>{“name”=>“我的 map 名称”,其他字段未在上面显示,“waypoints”=>{“waypointaddress”=>[“1600宾夕法尼亚大道西北,华盛顿, DC 20500", "350 5th Ave, New York, NY 10118"]}}

最佳答案

我认为您的问题是正确构建的形式(以及来自它的参数)。

我建议

  1. 看看 gem cocoonnested_form
  2. waypoints_attributes添加到attr_accessible
  3. 在表单中实现 gem 的助手(从第 1 点开始)

Rails 魔法应该完成其他工作

关于mysql - 如何删除 Rails 中使用 collection_select 保存的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18937381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com