我有两种型号
Client.rb has_many :addresses accepts_nested_atributes_for :addresses Address.rb has_many :addresses
我在ClientsController
上创建了一个新的动作update_establishments
,以便向客户端添加新的机构。
ClientsController.rb #the corresponding view of this action will render the locations_form def add_establishments @client = Client.find(params[:id]) @client.addresses.build end def update_establishments create_zip respond_to do |format| if @client.update(client_params) set_zip format.html { redirect_to @client, notice:'Establishment added.'} format.json {head :no_content} else format.html { render action: 'edit'} format.json { render json: @client.error, status: :unprocessable_entity } end end end locations_form %= form_for @client, :url=>{:action=>'update_establishments'}, html:{ :method =>"patch"} do |form| %>
我有两个问题:
1-呈现表单时,表单为地址呈现两个独立的字段,一个包含现有地址的值,另一个用于添加新地址。我怎样才能不提供现有地址?
2-由于@客户端
为零,因此在更新_机构
操作中出现明显错误。是否有一种方法可以将客户机本身从表单发送到操作,或者我必须添加带有值的隐藏字段?
问题1,当您调用@客户端时。地址。build
它正在为客户端构建第三个地址。我猜你会在表格上显示所有三个地址。
问题2,您将希望发送带有请求的客户端标识,并使用它来查找客户端。
接下来应该会解决这两个问题。
尽可能多地(几乎总是可能的)坚持标准的Rails控制器操作。非标准的控制器操作,如添加设置
或更新设置
通常是一种迹象,表明有一种更“轨道”的方式来模拟控制器。
在这种情况下,我会问为什么clientscontoler
在处理机构。如果您添加一个机构控制器
,我猜事情将刚刚开始工作。以下是如何做到这一点:
在配置/routes.rb中,创建具有嵌套机构资源的客户端资源。
resources :clients do
resources :establishments
end
这将为您提供一些嵌套的路由,这些路由都将从 /clients/:client_id/机构开始。
创建一个InstishmentsController
并将add_establishments
和update_establishments
移动到它。将add_establishments
重命名为new
并将update_establishments
重命名为更新
。还要移动相应的视图以 /views/establishments/并重命名它们以匹配它们的新操作名称。
如果没有令人信服的理由在new
操作中找到客户机,您可以构建一个新的机构来传递给视图。无论哪种方式,您的表单都将与此新机构关联,而不是与现有客户关联。(问题1)
在update
中,您将使用:client_id
参数查找客户机。(问题2)update
需要一点按摩,但我需要知道你是真的一次更新多家机构,还是只更新一家机构,看看会是什么样子。(您不会更新@client
本身,而是更新客户的机构。)
主要内容:添加新函数,获取最新更改在本文章教程中,我们将演示如何查看 Git 存储库的文件和提交文件记录,并对存储库中的文件作修改和提交。 注意:在开始学习本教程之前,先克隆一个存储库,有关如何克隆存储库,请参考: http://www.yiibai.com/git/git_clone_operation.html 执行克隆操作,并得到了一个新的文件:。想知道谁将这个文件修改变提交到存储库中,那么可以执行命令,为了更好的演示,开发
任何数据库上的UPDATE操作都意味着更新一个或多个已在数据库中可用的记录。 以下过程将SEX的所有记录更新为“M”。 在下面的例子中,我们将所有男性的年龄增加一年。 例子 (Example) /* Main program */ Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs' Call SQLLoadFuncs if SQL
我正在制作一个由任务管理器组成的应用程序。 在此任务管理器中,收件箱列表中有3个列表(收件箱、今天和星期),其中仅显示不带类别的任务,而在其他两个列表中,分别显示今天和本周的带类别或不带类别的任务。 我希望能够更改三个列表中一个任务的类别。因此,如果我更改收件箱任务的类别(不应该有类别),整个表都应该更新,任务应该从列表中删除。 我调试了程序,任务被正确地从列表中删除,但只有类别的单元格被更新,而
问题内容: 猫鼬架构: Upsert操作: 当我UPSERT 或默认模式值和总是更新不管文档插入或更新。使用时是相同的(当然,我不传递日期)。 我似乎没有发现任何东西可以说明这是否是预期的行为。我希望日期仅在插入时添加,而不更新,除非明确设置。 问题答案: 如果您正在寻找预期行为的“证明”,那么除了源代码本身之外,别无所求。特别是在主要定义内: 因此,您可以看到所有的中间件处理程序都已为每个“ u
本文向大家介绍postgresql 两表关联更新操作,包括了postgresql 两表关联更新操作的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 补充:Postgresql 连表更新字段语法 update 下面这段sql本来目的是想更新条件下的数据,可是这段sql却更新了整个表的数据。sql如下: 正确的写法有多种,如下方法也能够实现正确的数据库修改: 以上为个
问题内容: 我不确定是否在批量索引编制中正确使用了该操作。 我的要求是: 网址是: 我想我错过了文档中的某些内容,但仍然找不到如何进行此操作的方法。 我想要 在索引中创建以上文档,或者如果存在则对其进行更新。 问题答案: 如果您通过批量API将索引中的记录添加为 那么如果该ID已经存在于索引中,您将获得一个异常。如果要添加或 替换 文档(取决于文档是否存在),则应按以下方式进行请求 如果已经存在具