Ruby on rails Rails 5:如何设置对象';使用链接到的属性,不带任何控制器

Ruby on rails Rails 5:如何设置对象';使用链接到的属性,不带任何控制器,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 5,我正在尝试更新名为Dog的对象,该对象具有属性名称。我希望使用任何控制器方法进行此操作,目前我正在尝试以下方法: 这一直给我一个语法错误,但我已经尽了我所能 此外,我知道可以在控制器中定义一个函数(在本例中称为“delete_name”),并使用以下内容: 但我希望使用第一种方法。感谢您的帮助 为什么不在控制器中使用简单的destroy方法来遵循Rails的约定?destroy将删除整个对象,而我只想删除其“name”属性。为什么不在控制器中使用简单的destroy方法来遵循Rails的约定

我正在尝试更新名为Dog的对象,该对象具有属性名称。我希望使用任何控制器方法进行此操作,目前我正在尝试以下方法:

这一直给我一个语法错误,但我已经尽了我所能

此外,我知道可以在控制器中定义一个函数(在本例中称为“delete_name”),并使用以下内容:


但我希望使用第一种方法。感谢您的帮助

为什么不在控制器中使用简单的
destroy
方法来遵循Rails的约定?
destroy
将删除整个对象,而我只想删除其“name”属性。为什么不在控制器中使用简单的
destroy
方法来遵循Rails的约定?
destroy
将删除整个对象,而我只想删除它的“name”属性。谢谢Kasper的工作!我假设dog散列键必须跟随页面上的@dog对象。但是,由于我们已经指定了dog_path(),它只知道如何查找我们当前所在的dog对象?不能以这种方式使用实例变量。使用“:”时,密钥必须始终是有效符号。如果使用rockets,那么可以使用实例变量,但是键会被设置为实例变量的值,这也不是您想要的。我已经更新了我的原始答案,以便您可以看到这种行为的一个例子。非常感谢Kasper的解释,这真的很有帮助!谢谢你,卡斯珀,你成功了!我假设dog散列键必须跟随页面上的@dog对象。但是,由于我们已经指定了dog_path(),它只知道如何查找我们当前所在的dog对象?不能以这种方式使用实例变量。使用“:”时,密钥必须始终是有效符号。如果使用rockets,那么可以使用实例变量,但是键会被设置为实例变量的值,这也不是您想要的。我已经更新了我的原始答案,以便您可以看到这种行为的一个例子。非常感谢Kasper的解释,这真的很有帮助!
<%= link_to 'Delete Name', dog_path(@dog:{name: nil}), method: :patch %>
<%= link_to 'Delete Name', dog_path(dog:{name: nil}), method: :patch %>
2.3.3 :001 > @instance_variable = "test"
 => "test"
2.3.3 :002 > {@instance_variable => "value"}
 => {"test"=>"value"}