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

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

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

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

解決済

Reviewを投稿できない

hrc
hrc

総合スコア0

Ruby on Rails 4

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

1回答

0評価

0クリップ

2213閲覧

投稿2016/07/05 16:33

レストランクチコミサイトを作ろうとしています。
レストランページからReviewを投稿できるようにしたいのですが
undefined local variable or method `review_create_path'
とエラーが出て投稿できません。

以下ViewとRoute定義とControllerですが、何が問題なのでしょうか?

/app/views/restaurant/show.html.slim

ruby

= form_for :post, url: review_create_path do |f| = f\.label :title, "title" = f\.text_field :title = f\.label :comment, "comment" = f\.text_area :comment = f\.submit

route.rbはこちらです。

ruby

# Locale Information scope "\(:locale\)", locale: /en|ja/ do get '/' => 'frontpage#index' get 'restaurant/' => 'restaurant#index' get 'restaurant/:id' => 'restaurant#show' get 'menu/' => 'menu#index' get 'menu/:id' => 'menu#show' get 'area/' => 'area#index' get 'area/:id' => 'area#show' resources\(:review\) post 'review/' => 'review#create', as: :review_create_path devise_for :users, skip: \[:omniauth_callbacks\] end

rake routesの結果はこうでした。

ruby

review_index GET \(/:locale\)/review\(\.:format\) review#index {:locale=>/en|ja/} POST \(/:locale\)/review\(\.:format\) review#create {:locale=>/en|ja/} new_review GET \(/:locale\)/review/new\(\.:format\) review#new {:locale=>/en|ja/} edit_review GET \(/:locale\)/review/:id/edit\(\.:format\) review#edit {:locale=>/en|ja/} review GET \(/:locale\)/review/:id\(\.:format\) review#show {:locale=>/en|ja/} PATCH \(/:locale\)/review/:id\(\.:format\) review#update {:locale=>/en|ja/} PUT \(/:locale\)/review/:id\(\.:format\) review#update {:locale=>/en|ja/} DELETE \(/:locale\)/review/:id\(\.:format\) review#destroy {:locale=>/en|ja/} review_create_path POST \(/:locale\)/review\(\.:format\) review#create {:locale=>/en|ja/}

こちらはコントローラーです。

ruby

class ReviewController < ApplicationController def create @review = Review\.new\(review_params\) respond_to do |format| if @review\.save format\.html { redirect_to @review, notice: 'Review was successfully created\.' } format\.json { render :show, status: :created, location: @review } else format\.html { render :new } format\.json { render json: @review\.errors, status: :unprocessable_entity } end end end def review_params params\.require\(:review\)\.permit\(:title, :comment\) end end

初歩的ですみませんが、どうかよろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 4

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