2014-10-29 39 views
0

在視圖/報價/索引:未定義的方法`category`爲零:NilClass導軌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 %> 

在視圖/ dynamic_select /報價/ 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 

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 

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 

我在rails.I是新希望當我選擇從其父下拉列表中選擇類別來填充在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' 
+1

這裏有什麼'@ offer'?你可以發佈它的模型類代碼嗎? – Surya 2014-10-29 11:31:00

+0

在模型/報價:'has_many:類別' – Jack 2014-10-29 11:50:28

+0

@傑克 - 請你張貼您的錯誤信息一起backtrace,請? – BroiSatse 2014-10-29 11:52:18

回答

0

您沒有設置@offer在你的控制器,是這樣的:

@offer = Offer.first 

然後你可以使用:

@offer.categories 

@offer.Category記下情況和複數。

+0

仍然是相同的錯誤...未定義的方法「類別」的零:NilClass ............ @ juanpastas請告訴我,有什麼我必須添加在我的模型。謝謝 – Jack 2014-10-31 06:16:21

+0

這意味着數據庫中沒有任何優惠。你的問題不清楚,因爲你沒有解釋你想要的,我可以推斷它,但不清楚。 – juanpastas 2014-10-31 17:08:36

相關問題