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

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

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

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

Q&A

解決済

1回答

1388閲覧

検索ボックスを入れたのですがメソッドを見つかりません

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 4

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

0グッド

0クリップ

投稿2016/12/18 00:50

下記のコードは追加したものをindexに表示するというものです
Scaafoldで作ってeditとdestroyを消しました

そしてindex.htmlに検索バーをつけようと思い、こういう風に書きました

Ruby

1<p id="notice"><%= notice %></p> 2 3<h1>Title</h1> 4<%= form_tag action: :search do %> 5 <%= label_tag :title, 'キーワード:' %> 6 <%= text_field_tag :title %> 7 8 <%= submit_tag '検索' %> 9<% end %> 10 11<table> 12 <tbody> 13 <% @projects.each do |project| %> 14 <tr> 15 <td><%= project.title %></td> 16 17 <td><%= link_to 'Show', project %></td> 18 </tr> 19 <% end %> 20 </tbody> 21</table> 22 23<br> 24 25<%= link_to 'New Project', new_project_path %>

コントローラは

Ruby

1class ProjectsController < ApplicationController 2 before_action :set_project, only: [:show] 3 4 5 def index 6 @projects = Project.all 7 end 8 9 10 def show 11 end 12 13 # GET /projects/new 14 def new 15 @project = Project.new 16 end 17 18 19 20 # POST /projects 21 # POST /projects.json 22 def create 23 @project = Project.new(project_params) 24 25 respond_to do |format| 26 if @project.save 27 format.html { redirect_to @project, notice: 'Project was successfully created.' } 28 format.json { render :show, status: :created, location: @project } 29 else 30 format.html { render :new } 31 format.json { render json: @project.errors, status: :unprocessable_entity } 32 end 33 end 34 end 35 36 37 def search 38 @projects = Project.where('publish = ?', params[:title]) 39 render 'projects/index' 40 end 41 42 43 private 44 # Use callbacks to share common setup or constraints between actions. 45 def set_project 46 @project = Project.find(params[:id]) 47 end 48 49 # Never trust parameters from the scary internet, only allow the white list through. 50 def project_params 51 params.require(:project).permit(:title, :about, :image, :image_cache, :remove_image) 52 end 53end 54

No route matches {:action=>"search", :controller=>"projects"}
といった内容のエラーが出ます
どうすればエラーは消えますか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

No route matches {:action=>"search", :controller=>"projects"}

ルーティングがないですよ、といっているので追加すればいいと思います。

config/routes.rb
に追加しましょう。

自分で解決して欲しいので、参考URLだけはっておきます。
Rails のルーティング

もし英語のエラーメッセージがわからないのであれば、ググりましょう。
Railsは日本語のドキュメントがたくさんあります。
e.g. rails No route matches
これだけでも、いろいろ出てきます。

投稿2016/12/18 06:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/12/18 08:41

get 'projects/search' と書くとエラーは消えましたが検索ボタンを押すと今度は Routes match in priority from top to bottom と表示されます どうすれば解決しますか?
退会済みユーザー

退会済みユーザー

2016/12/18 09:00

それだけではなんとも言えないですが、index.htmlを見るに、メソッドはgetでしょうか?私はgetではなくpostだと思います。
退会済みユーザー

退会済みユーザー

2016/12/18 09:04

おっしゃる通りです・・・。 POSTですね ですがPOSTにしてもエラーが出てしまいます
退会済みユーザー

退会済みユーザー

2016/12/18 09:11

rake routesとコマンドを入力して、ルーティングは正しいかを確認してください。 あとは、ブラウザで右クリックから、ページのソースを表示から生成されているhtmlを見てformのルーティングがrake routesで出てくるものと一緒かなどを確かめてください。
退会済みユーザー

退会済みユーザー

2016/12/19 01:07

質問画面に記載したコードのままroutesを match ':controller(/:action(/:id))', via: [:get, :post, :patch] と追加してみたところ動きました ですが何を検索しても引っかかってくれません indexに表示されているtitleで検索しているのですが・・・。 これはどういったところを直せばいいのでしょうか?
退会済みユーザー

退会済みユーザー

2016/12/19 01:09

すみません 自己解決しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問