首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.toggle!返回“无路”红宝石

.toggle!返回“无路”红宝石
EN

Stack Overflow用户
提问于 2012-11-01 16:27:40
回答 1查看 54关注 0票数 0

好吧,可能是新手弄错了,但我希望有人能帮我。让我首先为这个例子的性质道歉。我的应用程序需要知道狗是否被阉割,并在狗的列表中查看这个选项。

例如..。

Dog1 _

视图看起来很棒,甚至正确地返回属性,问题是当我单击中性/非中性链接时,它不会切换数据库中的字段,并且我得到一个路由错误,没有路由匹配POST "/dogs/3“。

我有一个名为Dog的数据库,它有一个布尔选项: dogs_controller.rb中的中性

..。 def中性粒 @id= Dog.find(param:id) @dog.toggle!(:管理员) 闪光:成功=“改变了狗的绝育状态” redirect_to dogs_url 结束 ..。

在我的routes.rb里

..。 资源:狗做 成员do 观看者(节目中使用的其他地方)结束 结束 ..。

在列出我养的狗的部分

..。 <%= link_to dog.name,狗%> <%= if dog.neutered?%> <%= link_to“中性”,狗,方法::中性,数据:{确认:“这将标记狗为绝育。您确定吗?”} %>? <% %> <%= link_to“未绝育”,狗,方法::中性,数据:{确认:“这将标记狗没有绝育。您确定吗?”} %>? ..。

那我错过了什么?我相信这是很简单的事情,但我似乎找不到。我试过其他几种选择,但似乎什么也解决不了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 17:12:58

所以这里发生了几件事。

首先,如果要链接到中性操作,则link_to是不正确的。你要么需要一个指定的路线:

代码语言:javascript
复制
<%= link_to "Neutered", neuter_dog_path(dog), method: :post %>

或者您需要精确地指定控制器和操作:

代码语言:javascript
复制
<%= link_to "Neutered", controller: :dogs, action: :neuter, id: dog.id %>

第二,如果要选择指定的路由,则需要向路由文件中添加一个区段。

代码语言:javascript
复制
resources :dogs do
  member do
    post :neuter
  end
end

那么链接应该正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13181400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档