在将字符串作为参数而不是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