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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

解決済

1回答

909閲覧

ルーティングエラーを解決したい Ruby onrails

mabauki_bouken

総合スコア7

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2021/05/14 21:08

Ruby on railsで質問です。
オリジナルアプリを開発しています。作品の詳細ページに移動するときに
ルーティングエラーが発生します。

「Routing Error」

「undefined method `  before_action' for ReviewsController:Class Did you mean? before_action」

(以下該当ルーティングの全文です)
**Rails.application.routes.draw do

devise_for :users
resources :users, only: :show
resources :products, only: :show do
resources :reviews, only: [:new, :create]
collection do
get 'search'
end
end

root 'products#index'

end

(問題のソースコード)reviews_controller.rb
class ReviewsController < RankingController
before_action :authenticate_user!, only: :new

def new
@product = Product.find(params[:product_id])
@review = Review.new
end

def create
Review.create(create_params)
redirect_to controller: :products, action: :index
end

private
def create_params
params.require(:review).permit(:rate, :review).merge(product_id: params[:product_id], user_id: current_user.id)
end

reviews_controller.rbのbefore_action' forに問題があるようなのですが、
解決できず困っております。
ヒントにつながる解決方法を教えていただけますでしょうか?
よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2021/05/14 21:38

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 コードのみをコピペしてください(その他加工はしないように)
mabauki_bouken

2021/05/14 22:29

ご回答ありがとうございます! わかりにくくすみません。全角部分を修正しましたら解決できました! ありがとうございました。
m.ts10806

2021/05/14 23:09

質問は修正できます。 今からでもcodeは対応しておいてください。 「後から見る人、参考にする人」のためにも必要な対応です。
guest

回答1

0

ベストアンサー

エラーメッセージのとおりです。

undefined method `  before_action' となっていますが、before_actionの前に全角スペースがあります。

Rubyでは、全角スペースも変数やメソッドの名前として認められるので、全角スペースが混入している場合、全角スペースを含んだ名前のメソッドを探してしまいます。

投稿2021/05/14 21:39

maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問