質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1087閲覧

Rails 4.2.10で検索機能を実装できない

koichi8888

総合スコア24

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/05/18 08:20

編集2018/05/18 08:23

前提・実現したいこと

railsのアプリでトップページで各カラムのデータをAnd検索で検索する機能を実装したいです。
エラーメッセージからは原因が予測できず、投稿させていただきました。
下記のURLを参考にしました。
https://qiita.com/budougumi0617/items/d98fc15adea4dab438e7

発生している問題・エラーメッセージ

We're sorry, but something went wrong. If you are the application owner check the logs for more information.

該当のソースコード

items_controller.rb

Ruby

1class ItemsController < ApplicationController 2 3 def index 4 # データを降順で表示する 5 @items = GyomuDatum.all.order(created_at: 'desc') 6 7 # パラメータとしてサーバ名を受け取っている場合は絞って検索する 8 #if params[:target_server].present? 9 #@items = @items.get_by_target_server params[:target_server] 10 #end 11 12 #ViewのFormで取得したパラメータをモデルに渡す 13 @items = Item.search(params[:search]) 14 15 end 16 17 def show 18 end 19 20 def new 21 @item = GyomuDatum.new 22 end 23 24 def create 25 # render plain: params[:GyomuDatum].inspect 26 # save 27 # @item = Item.new(params[:GyomuDatum]) 28 # @item = GyomuDatum.new(params.require(:GyomuDatum).permit(:manage_id, :category_id, :publish_corporation, :ip_address, :target_server, :start_date, :end_date, :comment)) 29 @item = GyomuDatum.new(item_params) 30 # @item.save 31 # redirect 32 # redirect_to items_path 33 34 if @item.save 35 # redirect 36 redirect_to items_path 37 else 38 # render plain: @item.errors.inspect 39 render 'new' 40 end 41 end 42 43 44 def edit 45 @item = GyomuDatum.find(params[:id]) 46 end 47 48 def update 49 @item = GyomuDatum.find(params[:id]) 50# pp @item 51# pp item_params 52 53 if @item.update(item_params) 54 redirect_to items_path 55 else 56 render 'edit' 57 end 58 end 59 60 def destroy 61 @item = GyomuDatum.find(params[:id]) 62 @item.destroy 63 redirect_to items_path 64 end 65 66# private 67# def item_params 68# params.require(:GyomuDatum).permit(:manage_id) 69# params.require(:gyomu_datum).permit(:manage_id, :category_id, :publish_corporation, :ip_address, :target_server, :start_date, :end_date, :comment) 70# params.require.fetch(:GyomuDatum,{}).permit(:manage_id, :category_id, :publish_corporation, :ip_address, :target_server, :start_date, :end_date, :comment) 71# end 72 73 private 74 def item_params 75 permits = [ 76 :manage_id, 77 :category_id, 78 :publish_corporation, 79 :ip_address, 80 :target_server, 81 :start_date, 82 :end_date, 83 :comment 84 ] 85 params.require(:gyomu_datum).permit(permits) 86 end 87 88 89# private 90# def post_params 91# params.require(:post).permit(:title, :body) 92# end 93 94end 95

index.html.erb

Ruby

1<h2> 2 <ul class="header-left"> 3 <%= link_to 'HOME' , root_path, class: 'header-menu' %> 4 <%= link_to 'データ登録' , new_item_path, class: 'header-menu' %> 5 <%= link_to 'ユーザ管理' , new_item_path, class: 'header-menu' %> 6 <%= link_to '操作履歴一覧' , new_item_path, class: 'header-menu' %> 7 </ul> 8 <ul class="header-right"> 9 <%= link_to 'ログアウト' , new_item_path, class: 'header-menu' %> 10 </ul> 11</h2> 12 13<br> 14<br> 15<br> 16<h2> 17通知 18</h2> 19<br> 20<br> 21<br> 22<h2> 23データ検索 24</h2> 25<% form_tag items_path, :method => 'get' do %> 26 <p> 27 <%= text_field_tag :search, params[:search] %> 28 <%= submit_tag "Search", :target_server => nil %> 29 </p> 30<% end %> 31<h2> 32<br> 33<br> 34<br> 35<br> 36データ一覧 37</h2> 38 39 40 41<table border="1"> 42 <tr> 43 <th>管理ID</th> 44 <th>カテゴリ</th> 45 <th>発行会社</th> 46 <th>IPアドレス</th> 47 <th>対象サーバ</th> 48 <th>有効期限の開始日</th> 49 <th>有効期限の終了日</th> 50 <th>コメント</th> 51 <th>操作</th> 52 </tr> 53<% @items.each do |item| %> 54 <tr> 55 <td><%= item.manage_id %></td> 56 <td><%= item.category_id %></td> 57 <td><%= item.publish_corporation %></td> 58 <td><%= item.ip_address %></td> 59 <td><%= item.target_server %></td> 60 <td><%= item.start_date %></td> 61 <td><%= item.end_date %></td> 62 <td><%= item.comment %></td> 63 <td> 64 <%= link_to '[Edit]', edit_item_path(item), class: 'command' %> 65 <%= link_to '[x]', 66 item_path(item), 67 method: :delete, 68 class: 'command', 69 data: { confirm: 'データ削除しますか?' } %> 70 </td> 71 </tr> 72 73<% end %> 74</table> 75 76<h2> 77 <%= link_to 'CSV出力' , new_item_path, class: 'header-menu' %> 78</h2> 79

gyomu_datum.rb

Ruby

1class GyomuDatum < ActiveRecord::Base 2 3 validates :manage_id, presence: true 4 validates :category_id, presence: true 5 validates :publish_corporation, presence: true 6 validates :ip_address, presence: true 7 validates :target_server, presence: true 8 validates :start_date, presence: true 9 validates :end_date, presence: true 10 11 12 13 # 検索機能 14 15 # サーバ名による絞り込み 16 17 18 # サンプル 19def self.search(search) 20 if search 21 find(:all, :conditions => ['target_server LIKE ?', "%#{search}%"]) 22 else 23 find(:all) 24 end 25end 26 27 28 29 30 31end 32 33

試したこと

Webアプリのトップページにアクセスした際にエラーが表示され、アクセスできず、ログ(log/development.log)にも何も出力されていません。
gyomu_datum.rbの検索機能部分の記載をコメントアウトしたところ、トップページにアクセスできるようになります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

find(:all)などはRails 3時代の書き方です(Rails 4では、.find(id1つ、またはidの配列)という書き方しかできなくなっています)。whereで書き直しましょう。

Railsドキュメントのfindの項目

投稿2018/05/18 08:25

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koichi8888

2018/05/21 02:53

ご回答ありがとうございます。Railsのバージョンによって記載方法が違うのですね。記載方法を変更し、動作確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問