Nano Hash - криптовалюты, майнинг, программирование

неопределенный метод `category` для nil: NilClass rails 4

В просмотрах/предложениях/индексе:

<%= f.collection_select :catId_get, Category.order(:name), :id, :name, 
  { include_blank: true },
  {data:{
    dynamic_selectable_url: dynamic_select_offers_path(':catId_get'),
    dynamic_selectable_target: '#offer_menu_id'
  }} %>     


<%= f.collection_select :menuName_get, @offer.Category.try(:menus) || [], :id,:menu_item_name, :include_blank => true  %>

В views/dynamic_select/offers/index.json.jbuilder:

json.array!(@menus) do |menu|
  json.extract! menu, :menu_item_name, :id
end

В контроллерах/dynamic_select/offers_controller.rb:

module DynamicSelect
class OffersController < ApplicationController
  respond_to :json
  def index
    @menus=Menu.where(:category_id=>params[:catId_get])
    respond_with(@menus)
   end
end
end

In javascripts/dynamic_selectable.js.coffee:

$.fn.extend
  dynamicSelectable: ->
    $(@).each (i, el) ->
      new DynamicSelectable($(el))

class DynamicSelectable

  constructor: ($select) ->
    @init($select)

  init: ($select) ->
    @urlTemplate = $select.data('dynamicSelectableUrl')

   @$targetSelect = $($select.data('dynamicSelectableTarget'))

    $select.on 'change', =>
      @clearTarget()

      url = @constructUrl($select.val())

      if url
        $.getJSON url, (data) =>
          $.each data, (index, el) =>

            @$targetSelect.append "<option value='#{el.id}'>#{el.name}</option>"

          @reinitializeTarget()
      else
        @reinitializeTarget()

  reinitializeTarget: ->
    @$targetSelect.trigger("change")

  clearTarget: ->
    @$targetSelect.html('<option></option>')

  constructUrl: (id) ->
    if id && id != ''
      @urlTemplate.replace(/:.+_id/, id)

In javascripts/init.js.coffee:

window.initApp = ->
  $('select[data-dynamic-selectable-url][data-dynamic-selectable-target]').dynamicSelectable()

document.addEventListener 'page:load', initApp

$ initApp

In db/migrate:

create_table :menus do |t|
  t.integer 'hotel_id'    
  t.string 'menu_item_name'
  t.integer 'price'
  t.string 'item_type'
end
add_index("menus","hotel_id")#index is used to search 
end

create_table :categories do |t|
  t.string 'name'
  t.integer 'hotel_id'
end
add_index("categories","hotel_id")
end

Я новичок в рельсах. Я хочу заполнить данные в раскрывающемся списке menu_item, когда я выбираю категорию из раскрывающегося списка родительских элементов. Пожалуйста, помогите мне, я застрял в этом в течение 2 дней.

Started GET "/offers/index" for 127.0.0.1 at 2014-10-29 16:25:57 +0530
Processing by OffersController#index as HTML
 ←[1m←[35mCategory Load (15.6ms)←[0m  SELECT `categories`.*
FROM `categories`   ORDER BY `categories`.`name` ASC
  Rendered 
offers/index.html.erb within layouts/application (15.6ms)
Completed 

500 Internal Server Error in 32ms

ActionView::Template::Error 

(undefined method `Category' for nil:NilClass):
    316:                           
     <div>
    317:                                        <%= f.label "Select Menu:" %> 

&nbsp;
    318:
    319:                                        <%= f.collection_select 

:menuName_get, @offer.Category(:menus) || [], :id,:menu_item_name,
:include_blank => true  %>
    320:
    321:
    322:                                

</div>
  app/views/offers/index.html.erb:319:in `block in 

_app_views_offers_index_html_erb___717332836_61645344'


app/views/offers/index.html.erb:303:in 

`_app_views_offers_index_html_erb___717332836_61645344'

  • Что здесь @offer? Можете ли вы также опубликовать код класса модели? 29.10.2014
  • В моделях/предложении: has_many :categories 29.10.2014
  • @Jack - Не могли бы вы опубликовать сообщение об ошибке вместе с трассировкой, пожалуйста? 29.10.2014
  • пожалуйста, посмотрите код, который я редактировал 29.10.2014
  • Я разместил сообщение об ошибке выше. 29.10.2014

Ответы:


1

Вы не установили @offer в своем контроллере, например:

@offer = Offer.first

Затем вы можете использовать:

@offer.categories

Не @offer.Category обратите внимание на нижний регистр и множественное число.

30.10.2014
  • все та же ошибка... "категории" неопределенного метода для nil: NilClass............@juanpastas, пожалуйста, скажите мне, есть ли что-нибудь, что я должен добавить в свою модель. Спасибо 31.10.2014
  • это означает, что в вашей БД нет никакого предложения. Ваш вопрос не ясен, потому что вы не объясняете, что вы хотите, я могу сделать вывод, но не ясно. 31.10.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..