teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

一部記載箇所が抜けていた為、修正しました。

2018/08/02 20:02

投稿

izumo_higurashi
izumo_higurashi

スコア9

title CHANGED
File without changes
body CHANGED
@@ -1,18 +1,18 @@
1
1
  ### 前提・実現したいこ
2
2
 
3
3
  railsでのアプリケーション制作をしています。
4
+
5
+ ネットの情報を調べscaffoldを使って制作し、あっさり実装することが出来ましたが
6
+ 自身で制作中のアプリはscaffoldを使っていません。
7
+ 下記内容です。
8
+
4
9
  投稿記事一覧ページに
5
- <検索機能>を実装したいです
10
+ <検索機能>を実装したい。
6
11
 
7
- カラム名title カラム名opinion
12
+ モデル blos カラム名title
8
13
  内にあるものを検索した後、
9
14
  該当するものが一覧で表示されるようにしたいです。
10
15
 
11
- http://freesworder.net/rails-search/
12
- 上記のURLを参考にしましたが、解決できずでした。
13
-
14
- ご教授下さい。
15
-
16
16
  ### 発生している問題・エラーメッセージ
17
17
 
18
18
  エラーメッセージは表示されていないのですが、
@@ -21,50 +21,144 @@
21
21
  ### 該当のソースコード
22
22
  <コントローラー>
23
23
  ```ここに言語を入力
24
+ ```ここに言語を入力
24
25
  class BlogsController < ApplicationController
25
26
 
26
27
 
27
28
  def index
28
29
  @blog = Blog.new
29
-
30
- @Blogs = Blog.search(params[:search])
30
+ @blogs = Blog.search(params[:search])
31
+ end
31
32
 
33
+ def show
34
+ @blog = Blog.find(params[:id])
32
35
  end
33
36
 
37
+ def new
38
+ @blog = Blog.new
39
+ end
40
+
41
+ def create
42
+ blog = Blog.new(blog_params)
43
+ blog.save
44
+ redirect_to blog_path(blog.id)
45
+ end
46
+
47
+ def edit
48
+ @blog = Blog.find(params[:id])
49
+ end
50
+
51
+ def update
52
+ blog = Blog.find(params[:id])
53
+ blog.update(blog_params)
54
+ redirect_to blog_path(blog.id)
55
+ end
56
+
57
+ def destroy
58
+ blog = Blog.find(params[:id])
59
+ blog.destroy
60
+ redirect_to blogs_path
61
+ end
62
+
34
63
  private
35
64
  def blog_params
36
65
  params.require(:blog).permit(:title, :opinion, :image)
37
66
  end
38
67
 
39
68
  end
69
+
70
+
40
71
  ```
41
-
42
72
  <ビュー>
43
73
  ```ここに言語を入力
44
- <%= form_tag blogs_path, :method => 'get' do %> <%# 
45
- <p>
46
- <%= text_field_tag :search, params[:search] %>
74
+ <h1>books</h1>
75
+
47
- <%= submit_tag "Search", :title => nil %>
76
+ <%= form_tag("/blogs",method:"get") do %>
48
- </p>
77
+ <input type="text" title="search">
78
+ <input type="submit" value="search">
49
79
  <% end %>
50
80
 
81
+
82
+ <table>
83
+ <thead>
84
+ <tr>
85
+ <th>title</th>
86
+ <th>opinion</th>
87
+ <th>image</th>
88
+ </tr>
89
+ </thead>
90
+ <tbody>
91
+ <% @blogs.each do |blog| %>
92
+ <tr>
93
+ <td>
94
+ <%= blog.title %>
95
+ </td>
96
+ <td>
97
+ <%= blog.opinion %>
98
+ </td>
99
+ <td>
100
+ <%= attachment_image_tag blog, :image, :fill, 30, 30, format: 'jpeg' %>
101
+ <td>
102
+ <%= link_to "show", blog_path(blog.id) %>
103
+ <%= link_to "edit", edit_blog_path(blog.id) %>
104
+
105
+ <%= link_to "destroy", blog_path(blog.id), method: :delete %>
106
+
107
+ </td>
108
+ </tr>
109
+ </tbody>
110
+ <% end %>
111
+ </table>
112
+
113
+
114
+ <h2>new book</h2>
115
+
116
+ <%= form_for(@blog) do |f| %>
117
+
118
+ <h4>title</h4>
119
+ <%= f.text_field :title %>
120
+
121
+ <h4>opinion</h4>
122
+ <%= f.text_field :opinion %>
123
+
124
+ <h4>image</h4>
125
+ <%= f.attachment_field :image %>
126
+
127
+ <br>
128
+
129
+ <%= f.submit 'create' %>
130
+
131
+ <% end %>
132
+
133
+
134
+ <footer>
135
+
136
+ <h3></h3>
137
+
138
+ </footer>
139
+
51
140
  ```
141
+
142
+
52
143
  <モデル>
53
144
  ```ここに言語を入力
145
+ ```ここに言語を入力
54
146
  class Blog < ApplicationRecord
55
147
 
56
148
  attachment :image
57
149
 
58
- def self.search(search)
150
+ def self.search(search)
59
151
  if search
60
- Blog.where(['title LIKE ?', "%#{search}%"])
152
+ Blog.where(Blog.arel_table[:title].matches("%#{search}%"))
61
153
  else
62
- Blog.all
154
+ Blog.all
63
155
  end
64
156
  end
65
157
 
66
158
  end
159
+
67
160
  ```
161
+ ```
68
162
 
69
163
  初めての質問で言葉足らずで申し訳ありません。
70
164
  よろしくお願いします。