RedMineのプラグイン作成でハマった話 その3
http://blog.goo.ne.jp/xmldtp/e/cbdedea35eb282f9522728c36af63c7b
のつづき
■サンプルどおりに書くと、Page not foundエラー画面(404画面)が表示される
【現象】
一覧表示 アクション
http://www.r-labs.org/projects/r-labs/wiki/GuideIndexAction
で書かれているように
def index
@foos = Foo.find(:all, :conditions => ["project_id = #{@project.id} "])
end
と記述すると、Page not foundエラー画面
【理由】
Railsが4だから。Rails3までは、find(:all)があったが
今は、find.allやfind.whereで書くみたい
【対策】
def index
@foos = Foo.where('project_id' => @project.id )
end
とする
■404エラー、500エラー画面がでる。
【現象】
「新しいサンプルデータ」をクリックすると、
404
アクセスしようとしたページは存在しないか削除されています。
が出たり、
Internal error
がでたりする。
【理由】
必要なファイルを、正しく作っていない。
必要なファイルと修正
・コントローラーのnew追加、createをメソッドごと追加
・viewのfoosのnew.html.erb書き換え、_form.html.erb新規作成
・moduleのfoo.rbの追加書き換え
が必要になるが、このうちどれかをやっていない。
または、DB構造が違っている。foosテーブルは、こんな雰囲気になっているはず
(実のところ、なぜか、なっていなかったので、
alter table foos add subject varchar(255);
alter table foos add description text;
を実行して、手で追加修正したので、
自動的に作成すると、本当は少し違うかもしれない・・)
【対策】
上記のファイル・テーブルを追加・修正します。
どのように修正すればよいのかは、こんど、別エントリで書く予定
■ActiveRecord::DuplicateMigrationNameError:
【現象】
bundle exec rake db:migrate_plugins RAILS_ENV='production'
を実行したら、
ActiveRecord::DuplicateMigrationNameError:
とかいうんで、エラーメッセージがいっぱい出る
【理由】
テーブルを変えて、おかしくなった。
【対策】
プラグインの下に、db/migrateというディレクトリがあり、
そこに、001・・・・、002・・・とかある。その中の最新
(一番番号の大きいの)を削除して、
bundle exec rake db:migrate_plugins RAILS_ENV='production'
したら、直った(この前に、DB構造が違っていたので、修正している)
■編集をクリックしたら、エラーメッセージ
【現象】
編集をクリックすると
Internal error
がでる。
【理由】
preview_project_foo_path(@project) のところ、
プロジェクトとFooのIDの2段がまえで指定しなければいけないところを、
プロジェクトIDだけ指定しているので、
IDがnullになり、ID指定が無いとなるらしい??
【対策】
あっているかどうかは分からないんだけど・・・
preview_project_foo_path(@project,@foo.id)
って、引数を2つにしたら、エラー画面にはならなくなった・・・
(が、これでよいのかどうかはわからない・・・)
ここまでやって、動きは変なんだけど、エラーにはならないものができたので、
今度ソースを紹介したいと思う。
http://blog.goo.ne.jp/xmldtp/e/cbdedea35eb282f9522728c36af63c7b
のつづき
■サンプルどおりに書くと、Page not foundエラー画面(404画面)が表示される
【現象】
一覧表示 アクション
http://www.r-labs.org/projects/r-labs/wiki/GuideIndexAction
で書かれているように
def index
@foos = Foo.find(:all, :conditions => ["project_id = #{@project.id} "])
end
と記述すると、Page not foundエラー画面
【理由】
Railsが4だから。Rails3までは、find(:all)があったが
今は、find.allやfind.whereで書くみたい
【対策】
def index
@foos = Foo.where('project_id' => @project.id )
end
とする
■404エラー、500エラー画面がでる。
【現象】
「新しいサンプルデータ」をクリックすると、
404
アクセスしようとしたページは存在しないか削除されています。
が出たり、
Internal error
がでたりする。
【理由】
必要なファイルを、正しく作っていない。
必要なファイルと修正
・コントローラーのnew追加、createをメソッドごと追加
・viewのfoosのnew.html.erb書き換え、_form.html.erb新規作成
・moduleのfoo.rbの追加書き換え
が必要になるが、このうちどれかをやっていない。
または、DB構造が違っている。foosテーブルは、こんな雰囲気になっているはず
(実のところ、なぜか、なっていなかったので、
alter table foos add subject varchar(255);
alter table foos add description text;
を実行して、手で追加修正したので、
自動的に作成すると、本当は少し違うかもしれない・・)
【対策】
上記のファイル・テーブルを追加・修正します。
どのように修正すればよいのかは、こんど、別エントリで書く予定
■ActiveRecord::DuplicateMigrationNameError:
【現象】
bundle exec rake db:migrate_plugins RAILS_ENV='production'
を実行したら、
ActiveRecord::DuplicateMigrationNameError:
とかいうんで、エラーメッセージがいっぱい出る
【理由】
テーブルを変えて、おかしくなった。
【対策】
プラグインの下に、db/migrateというディレクトリがあり、
そこに、001・・・・、002・・・とかある。その中の最新
(一番番号の大きいの)を削除して、
bundle exec rake db:migrate_plugins RAILS_ENV='production'
したら、直った(この前に、DB構造が違っていたので、修正している)
■編集をクリックしたら、エラーメッセージ
【現象】
編集をクリックすると
Internal error
がでる。
【理由】
preview_project_foo_path(@project) のところ、
プロジェクトとFooのIDの2段がまえで指定しなければいけないところを、
プロジェクトIDだけ指定しているので、
IDがnullになり、ID指定が無いとなるらしい??
【対策】
あっているかどうかは分からないんだけど・・・
preview_project_foo_path(@project,@foo.id)
って、引数を2つにしたら、エラー画面にはならなくなった・・・
(が、これでよいのかどうかはわからない・・・)
ここまでやって、動きは変なんだけど、エラーにはならないものができたので、
今度ソースを紹介したいと思う。