【5/28更新】回答が連続投稿される不具合について

ruby on rails の初心者です。
rubyのバージョンは、ruby 2.0.0p451 (2014-02-24 revision 45167)です。


http://www.rubylife.jp/rails/ini/index4.html
の初心者向けの記事を読みながら、コントローラーとアクションの設定の勉強をしていたのですが、

終盤どうしてもrails sでサーバーを起動すると、
/Library/Ruby/Gems/2.0.0/gems/actionpack-4.1.1/lib/action_dispatch/routing/mapper.rb:196:in `normalize_conditions!': You should not use the `match` method in your router without specifying an HTTP method. (RuntimeError)
If you want to expose your action to both GET and POST, add `via: [:get, :post]` option.
If you want to expose your action to GET, use `get` in the router:
Instead of: match "controller#action"
Do: get "controller#action”
という表示がでてきてしまい起動できません。

matchをgetなどにかえて対処使用としても無理でした(sintax errolorがでます)。

どうしてでしょうか。どなたか教えて頂けると幸いでございます。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

get '/:hello', :to=> 'booklist#hello'


get '/:bye', to:=> 'booklist#bye'

これはbooklistコントローラがあって、そこにhelloとbyeアクションがある、ということですよね? ならばこれをを、

get "/hello" => "booklist#hello"
get "/bye" => "booklist#bye"

こうするとどうでしょう?
パラメータなど渡す必要がないならこれでいけると思うんですが。/:helloというように:をつけるとパラメータとして認識されますので意味が変わってきます。

ちなみに命名規約から、アドレスはhttp://ドメイン/コントローラ/アクション という形にするのが基本ですので、こうしたほうがいいと思います。

get "/booklist/hello" => "booklist#hello"
get "/booklist/bye" => "booklist#bye"
    • good
    • 0
この回答へのお礼

shylock さん

おかげさまで起動することが出来ました!
誠にありがとうございます!
また何か在ったときに、お力貸していたただけると嬉しいです。

お礼日時:2014/05/15 22:18

Ruby 2.0ということは、Railsのバージョンは4ですか?



Rails4から、routesではmatchは使えなくなっています。getやpostで記述して下さい。


>matchをgetなどにかえて対処使用としても無理でした(sintax errolorがでます)。

どう変えたのでしょうか。Rails4だとgetの書き方はこんな感じになると思います。

match "/hoge" → "hoge#index", via: :get

そのへんの書き方をもう一度確認してみてください。

この回答への補足

shylockさま

お返事ありがとうございます!
railsは4.1.1です。

sintax errolorですが、

routerのところに(冒頭で述べさせて頂いたURLの課題で)

Rails.application.routes.draw do

get "/hello" => "booklist#hello",via::get
get "/bye" => "booklist#bye",via::get

end

と入力すると、

ターミナルに
・・・config/routes.rb:3: syntax error, unexpected '\n', expecting => (SyntaxError)
・・・config/routes.rb:4: syntax error, unexpected '\n', expecting =>

と出てきてしまいます。

別の打ち方として、

Rails.application.routes.draw do

  'booklist#hello',via::get
   'booklist#bye' ,via::get

end

とうつと、ターミナルにconfig/routes.rb:62: syntax error, unexpected keyword_end, expecting end-of-input (SyntaxError)
と出てきてしまいます。

別の打ち方として
Rails.application.routes.draw do

  get '/:hello', :to=> 'booklist#hello'
get '/:bye', to:=> 'booklist#bye'
end

とうつとターミナルに
config/routes.rb:4: syntax error, unexpected => (SyntaxError)
get '/:bye', to:=> 'booklist#bye'
^

config/routes.rb:61: syntax error, unexpected keyword_end, expecting end-of-input
とエラーがでてきてします。

基本的なことがわかってないのだと思います。お力貸して頂けると幸いです。
orz

補足日時:2014/05/13 23:46
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QrubyでC言語のexitにあたる構文は?

現在、C言語のプログラムをrubyに書き換えています。

そこで、C言語のexitに当たるrubyの構文、もしくは、
文法が見つからず、困ってます。
(ある条件になったら、強制的にrubyの実行を
 停止させたいのですが、、、)
(__END__ですか?)

詳しい方が居ましたら、ご指南下さい。

Aベストアンサー

#2です。
>exit のあとの数字について詳しく知らないので、
>教えていただけたら幸いです。
exitのあとの数字は終了コードといって、どのような状態で、このプログラムが終了したかを、呼び出しもとに伝える為のものです。
この値は、呼び出し元と、呼び出される側(このプログラム)との決め毎なので、どのようにきめてもかまわないのですが、
ふつうは、終了コード:0で終了したときが、正常終了にします。
それ以外の値は、異常終了を示す値にします。

この終了コードは、なにかのサブルーチンを作ったときの、戻り値に似ています。
サブルーチンの戻り値は、呼び出しもとと呼び出される側(サブルーチン側)とで、自由にきめて良いのですが、
通常は、正常:0、以外は、それなりの異常にしますよね。


人気Q&Aランキング

おすすめ情報