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

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

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

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

Ruby on Rails 4

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

Q&A

1回答

4093閲覧

rails_adminでアソシエーション関連のエラーが出る

sara

総合スコア11

Ruby on Rails

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

Ruby on Rails 4

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

0グッド

0クリップ

投稿2017/03/22 12:45

###エラー内容
現在rails_adminを使い管理しています。

サイト上の「投稿(shop/new)」ボタンを押して投稿するとエラーなく成功します。

しかし、rails_adminでshop一覧を見るとなぜかエラーが発生して、一覧や投稿ができません。

###リンクで投稿する場合

shopモデルとareaモデルがありアソシエーションされています。
(active_hashを使ってます)

# shop.rb extend ActiveHash::Associations::ActiveRecordExtensions belongs_to_active_hash :area
# area.rb include ActiveHash::Associations has_many :shops

そしてフォームは以下のようになってます。

<%= form_for(@shop, html: {multipart: true}) do |f| %> <div class="field"> <%= f.label :area %> <%= f.collection_select :area_id, Area.all, "id", "name", {prompt: "エリアを選択"}, {class: "form-control"} %> </div>

普通に投稿リンクやアドレスバーに直接「localhost:3000/shop/new」と書き込めば、area_idを選択できエラーなく投稿できます。

###rails_adminの場合

rails_adminにログインして「一覧(admin/shop)」を見ると、以下のようなエラーメッセージが出ます。

NoMethodError at /shop undefined method `properties' for nil:NilClass
register_instance_option :searchable do @searchable ||= associated_model_config.abstract_model.properties.collect(&:name).include?(associated_model_config.object_label_method) ? [associated_model_config.object_label_method, {abstract_model.model => method_name}] : {abstract_model.model => method_name} end

そして、アドレスバーに「admin/shop/new」と打つと投稿フォームに移動はできるのですが、なぜかarea_id(外部キー)を選べるフォーム(<%= f.collection_select :area_id, Area.all, "id", "name", {prompt: "エリアを選択"}, {class: "form-control"} %>)が現れません。

(普通に投稿(shop/new)だとarea_idを選べるフォームがあって、きちんと選択できます)

なぜrails_adminだと一覧や投稿ができないのでしょうか?

わかる方よろしくお願いします!

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

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

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

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

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

guest

回答1

0

もう解決済みかもしれませんが、おかげさまで発見があったので。

結論としては、belongs_to_active_hashがモデルのどこかにある時点でエラーになってしまうようです。

RailsAdminのソースでいうと、ActiveHashで生成されたクラスが、以下の箇所のif文のいずれにも当てはまらず、nilを返してしまうからです。

https://github.com/sferik/rails_admin/blob/master/lib/rails_admin/abstract_model.rb#L49

投稿2018/09/11 06:01

dialbird

総合スコア379

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問