Ruby on Rails - 找不到带有"id"=string 的帖子



在将字符串作为参数而不是ID传递时遇到问题。我一直受到"找不到带有'id'=stack的帖子"的打击。

routes.rb 在重定向控制器中发出 GET 请求 :short_url。

get '/:short_url' => 'posts#redirect'
resources :posts

post_controller.rb 正在查找帖子中的参数[:short_url]。

def redirect
    @post = Post.find(params[:short_url])
    redirect_to @post.(params[:url])
end

视图只是一个带有 @post.each do |post| 循环的锚标记。

    <a class="item" target="_blank" href="<%= post.short_url %">
      <div>Short URL</div>
      <%= post.short_url %>
    </a>

不确定我是否在路由或控制器级别错误地调用了参数。

find 方法根据id(整数)查找记录。如果要根据任何其他字段(在您的情况下为 short_url)查找表,则需要使用 find_by 方法。

您收到错误Couldn't find Post with 'id'=stack ActiveRecord正在查找posts表中不存在的stack id。尝试

@post = Post.find_by(short_url: params[:short_url])
redirect_to @post

最新更新