我正在尝试设置帖子编辑页面,其中包含编辑和删除帖子的链接。我遇到了麻烦,因为我的编辑控制器似乎无法接收我发送的参数。我已将它们打印在页面上以确保它们在那里,并且显示正确,但是当我点击editlink时,我得到ActiveRecord::RecordNotFound
Couldn't find Article with 'id'=
。
这里是带有链接的视图:( article.id在这个上正确显示)
<div id= "articles-index">
<div class = "row">
<% @article.each do |article| %>
<div class="row">
<div class = "container">
<p><%= link_to article.title, article %> | <%= article.updated_at.strftime("%e. %b %Y, %H:%M") %> | <%= link_to 'edit', articles_update_path(article.id) %> | delete</p>
<h2><%= article.id %></h2>
</div>
</div>
<% end %>
</div>
</div>
文章控制器:( ...是我编辑更多代码的地方,因为它与此问题无关)
class ArticlesController < ApplicationController
...
def update
@article = Article.find(params[:id])
end
def manage
@article = current_user.articles
@article = current_user.articles.order('id DESC')
end
...
def article_params
params.require(:article).permit(:id, :title, :body, :user_id)
end
end
路线:
get 'articles/edit'
get 'articles/destroy'
get 'articles/manage'
get 'articles/show'
get 'articles/index'
get 'articles/new'
get 'articles/update'
get 'articles/search'
get 'articles/create'
get 'sessions/destroy'
get 'sessions/new'
get 'users/new'
resources :users
resources :sessions
resources :articles
答案 0 :(得分:0)
点击链接会发出GET请求。我猜测你的控制器上的更新操作将期望params成为POST请求。
编辑操作通常会处理GET。 更新操作会收到POST请求。
我试图在Railsconf上找到DHH 2007主题演讲,其中非常清楚。如果你能找到它,请观看它。
请参阅Rails指南中的CRUD Verbs and Actions
更新:刚看到你的路线档案。如果它是GET请求,那么只需将URL直接放入浏览器即可。 e.g。
articles/update?id=123
查看控制器中的params [:id] == 123。应该是。
更新2
articles_update_path(id: article.id)
使用:id键生成一个params,但从根本上说你不应该用GET路由调用更新动作。