这让我觉得非常简单,这就是为什么它让我烦恼,我无法弄清楚。我正在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.
我不明白。这与我试图打开的页面没有任何关系。我没有使用控制器的那部分。我被卡住了。有人能帮我理解我做错了什么吗?谢谢!
答案 0 :(得分:0)
我假设您的控制器中有before_action
您希望确保不会调用本地操作
before_action :set_post, except: [:local]
或者它只用于show
before_action :set_post, only: [:show]
您可以将动作名称的除数字或仅数组作为符号传递。
答案 1 :(得分:0)
问题源于你没有将参数中的任何id传递给控制器的事实。因此,您的方法set_post无法检索任何帖子并返回ActiveRecord错误。
所以你有两个选择: