

いま映画情報のWEBサイトを作っています。  
表示させてあるリンクから、show.html.erbを表示させたいです。  
ActiveRecord::RecordNotFound in ProductsController#show  
とエラーが出ました。  
products_controller.rbに

[code]

    class ProductsController < RankingController
      def index
        # productsテーブルから最新順に作品を２０件取得する
        @products = Product.limit(20).order('id DESC')
      end
    
      def shows
        @product = Product.find(params[:id])
      end
    
      def search
        # 検索フォームのキーワードをあいまい検索して、productsテーブルから20件の作品情報を取得する
        @products=Product.find(params[:title]).order('id DESC').limit(20)
        @products =Product.where("name like '%" +title+ "%'")
      end
    end
    
[/code]

このように記述しました。  
それがshow.html.erbのa hrefに反映されるようにしたいです。  
show.html.erbには

[code]

    <div id="main_cnt_wrapper">
        <div id="yjContentsBody">
          <div class="yjContainer">
            <span class="yjGuid"><a id="yjContentsStart" name="yjContentsStart"></a><img alt="ここから本文です" height="1" src="http://i.yimg.jp/yui/jp/tmpl/1.1.0/audionav.gif" width="1"></span>
            <div id="yjMain">
              <article class="section">
                <div class="container">
                  <header class="header header--section">
                    <h2 class="text-middle">
                      <i class="icon-movie color-gray-light"></i><%= @product.title %>
                    </h2>
                  </header>
                  <p style="text-align: center">
                    <img src="<%= @product.image_url %>" alt="<%= @product.title %>">
                  </p>
                  <div style="text-align: right">
                    <a href="/show/:id">この作品を投稿する</a>　←ここが重要
                  </div>
                  <header class="header header--section">
                    <h2 class="text-middle">
                      <i class="icon-movie color-gray-light"></i>みんなのレビュー
                    </h2>
                  </header>
                  <ul style="padding: 0">
                    <li style="border-bottom: dotted 1px">
                      <div class="thumbnail__caption">
                        <h3 class="text-xsmall text-overflow" title="テスト太郎">
                          </span>テスト太郎<small 2014=""></small>
                        </h3>
                        <p class="text-small">
                          <span class="rating-star"><i class="star-actived rate-[ここに評価を表示]0"></i></span>
                        </p>
                        <p>
                          面白い！
                        </p>
                      </div>
                    </li>
                  </ul>
                </div>
              </article>
            </div>
            <div id="yjSub">
    
[/code]

と記述しました。


CC BY-SA 3.0
2016-04-12T05:50:52.690
23939
2016-04-13T12:19:23.430
14754
question
ruby-on-rails
リンクからhtmlを表示させる方法


あんまり自信がないですが

[code]

      @products=Product.find(params[:title]).order('id DESC').limit(20)
    
[/code]

だと、id で検索する事になるんじゃないですかね?

[code]

      @products=Product.find_by_title(params[:title]).order('id DESC').limit(20)
    
[/code]

とかじゃないかと思います。

あと

[code]

    def search
      @products=Product.find(params[:title]).order('id DESC').limit(20)
      @products =Product.where("name like '%" + title + "%'")
    end
    
[/code]

だと @products に2回代入しているので、  
どっちかいらない気がします。

それと、params に変な文字が入ってないかチェックしないとダメだと思います。  
お客さんの個人情報とか入ってなかったら、  
盗まれたり壊されたりしてもいいのかもしれませんが

気になる場合は、`strong parameters`,`rails プレースホルダー`,`SQLインジェクション` で検索して下さい。


CC BY-SA 3.0
2016-04-12T15:52:53.830
23969
2016-04-13T12:19:23.430
2016-04-13T12:19:23.430
15007
15007
23939
answer