IDの代わりに文字列をパラメータとして渡すのに問題があります。私は "id = stack"のポストを見つけることができませんでした。Ruby on Rails - 'id' =文字列でポストが見つかりませんでした
routes.rbは、リダイレクトコントローラで:short_urlのGETリクエストを行います。
get '/:short_url' => 'posts#redirect'
resources :posts
post_controller.rbは、投稿のparams [: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>
ルートまたはコントローラレベルでパラメータを誤って呼び出しているかどうかわかりません。
「id」= stackの「stack」は、渡される文字列の単なる例です。 – Dorian
'@post = Post.find_by_short_url(params [:short_url])構文を使用するべきです – djothefou