ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

RedMineのプラグイン作成でハマった話 その4

2015-08-13 16:56:05 | Weblog
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つにしたら、エラー画面にはならなくなった・・・
(が、これでよいのかどうかはわからない・・・)




ここまでやって、動きは変なんだけど、エラーにはならないものができたので、
今度ソースを紹介したいと思う。
ジャンル:
ウェブログ
この記事についてブログを書く
この記事をはてなブックマークに追加
« 東工大は世界中に迷惑かける... | トップ | シンプルに、ワンワードで! »
最近の画像もっと見る

あわせて読む