Rails 4,控制器未接收到参数

时间:2015-04-12 14:30:46

标签: ruby-on-rails

我正在尝试设置帖子编辑页面,其中包含编辑和删除帖子的链接。我遇到了麻烦,因为我的编辑控制器似乎无法接收我发送的参数。我已将它们打印在页面上以确保它们在那里,并且显示正确,但是当我点击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

GitHub Link

1 个答案:

答案 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路由调用更新动作。