好吧,可能是新手弄错了,但我希望有人能帮我。让我首先为这个例子的性质道歉。我的应用程序需要知道狗是否被阉割,并在狗的列表中查看这个选项。
例如..。
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“未绝育”,狗,方法::中性,数据:{确认:“这将标记狗没有绝育。您确定吗?”} %>? ..。
那我错过了什么?我相信这是很简单的事情,但我似乎找不到。我试过其他几种选择,但似乎什么也解决不了。
发布于 2012-11-01 17:12:58
所以这里发生了几件事。
首先,如果要链接到中性操作,则link_to是不正确的。你要么需要一个指定的路线:
<%= link_to "Neutered", neuter_dog_path(dog), method: :post %>或者您需要精确地指定控制器和操作:
<%= link_to "Neutered", controller: :dogs, action: :neuter, id: dog.id %>第二,如果要选择指定的路由,则需要向路由文件中添加一个区段。
resources :dogs do
member do
post :neuter
end
end那么链接应该正常工作。
https://stackoverflow.com/questions/13181400
复制相似问题