新页面未加载 - ActiveRecord :: RecordNotFound

时间:2016-11-02 17:15:54

标签: ruby-on-rails ruby activerecord

这让我觉得非常简单,这就是为什么它让我烦恼,我无法弄清楚。我正在rails中创建一个基本的新闻应用程序。我有一个"帖子"控制器,控制我的基本页面的内容。我想要一个包含本地新闻的页面。我进入了帖子控制器并做了一个名为" local"

的新动作
def local

end 

然后我进入了我的routes.rb文件并为该页面制作了一条路线。

get "posts/local" => "posts#local"

然后我创建了一个local.html.erb文件并将其放在我的帖子视图中。

当我尝试点击posts_local_path的链接时,我得到了这个:

ActiveRecord::RecordNotFound

Extracted source (around line #74):
72
73
74
75
76
77

# Use callbacks to share common setup or constraints between actions.
def set_post
  @post = Post.friendly.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.

我不明白。这与我试图打开的页面没有任何关系。我没有使用控制器的那部分。我被卡住了。有人能帮我理解我做错了什么吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我假设您的控制器中有before_action

您希望确保不会调用本地操作

before_action :set_post, except: [:local]

或者它只用于show

before_action :set_post, only: [:show]

您可以将动作名称的除数字或仅数组作为符号传递。

答案 1 :(得分:0)

问题源于你没有将参数中的任何id传递给控制器​​的事实。因此,您的方法set_post无法检索任何帖子并返回ActiveRecord错误。

所以你有两个选择:

  • 要么使用set_post,需要在路径中指定:id param
  • 或者您通过调整before_action过滤器来避免调用set_post(根据j-dexx的答案)