rails-jquery-autocomplete を使用してcabinet_name
、次のようなフォームに入力しています。
<%= autocomplete_field_tag :cabinet_name, '', cabinets_autocomplete_cabinet_name_path %>
他のデータとともに、デバイス コントローラーに渡されるパラメーターは次のとおりです。
{"utf8"=>"✓",
"authenticity_token"=>"/0yFGrlBy0y+2ksTkQN50Dmfpw7ZWBKsO2zswAigJZI=",
"device"=>{"name"=>"Test dropdown",
"device_model_id"=>"621",
"device_unit_count"=>"1",
"position"=>"1",
"row_id"=>"1"},
"cabinet_name"=>"0055-COMM-ANNEX-C3",
"commit"=>"Create Device"}
ご覧のとおり、ハッシュcabinet_name
に が渡されていることは間違いありません。device
のコードは次のdevices_controller
とおりです。
def create
if params[:cabinet_name]
@cabinet = Cabinet.where("name LIKE ? ", params[:cabinet_name])
else
@cabinet = Cabinet.find(params[:device][:cabinet_id])
end
...
@device.row_id = @cabinet.row_id
コマンド ライン出力に従って実行されるクエリを次に示します。次の点に注意してください。
←[1m←[35mCabinet Load (2.9ms)←[0m SELECT `cabinets`.* FROM `cabinets` WHERE (
name LIKE '0055-COMM-ANNEX-C3' )
以下は、1 つのキャビネット レコードの結果を示す手動クエリと実行結果です。
mysql> select `cabinets`.* from `cabinets` where name like '0055-COMM-ANNEX-C3'
---------------+
| id | name | row_id | data_center_id | cabinet_type_id | creat
d_at | updated_at | row_name | cabinet_name | capacity_used |
not_cabinet | grid_location_name | grid_location_id | is_rack | alias_name
| room_id | mark_review | mark_validated | mark_audit | last_audit_note | ma
k_deleted | purpose | total_power_kpm | total_max_power_kpm | total_heat_btu |
otal_max_heat_btu | total_heat_kpm | total_max_heat_kpm | total_spec_ratings |
ean_efficiency |
------------------+----------------+--------------------+--------------------+-
---------------+
| 1389 | 0055-COMM-ANNEX-C3 | NULL | 3 | 1 | 2012-
1-05 21:55:23 | 2012-11-21 16:21:34 | C3 | C3 | 2 |
NULL | C3 | 2287 | 0 | 0055-COMM-ANNEX
C3 | 4 | NULL | NULL | NULL | NULL |
NULL | NULL | 42 | 64 | 200 |
280 | 8 | 10 | 0 |
NULL |
------------------+----------------+--------------------+--------------------+-
---------------+
1 row in set (0.00 sec)
キャビネットが選択されたことを示すブラウザーがスローするエラーは次のとおりです。
undefined method `row_id' for #<ActiveRecord::Relation:0x5845368>
問題が理解できた方、アドバイスをお願いします。ありがとう。