मैं श्रेणी के आधार पर अपने रैफल्स को फ़िल्टर करने के लिए अपने रैफल्स इंडेक्स पेज पर एक साधारण फिल्टर बनाने की कोशिश कर रहा हूं। हालांकि, चुनिंदा विकल्पों में से कोई भी पॉप्युलेट नहीं हो रहा है- ड्रॉप डाउन पूरी तरह से खाली है। मुझे लगता है कि यह मेरे विचार से कुछ लेना-देना है, मैं निश्चित रूप से रूपों का कोई विशेषज्ञ नहीं हूं।

#app/controllers/raffles_controller.rb 
def index
  @raffles = Raffle.filter(params[:filter])
end

#app/models/raffle.rb
class Raffle < ApplicationRecord
has_many :tickets
has_many :users, through: :tickets

  def self.filter(filter)
    if filter
        raffle = Raffle.where(category: filter)
    else
        Raffle.all
    end
  end

end

#app/views/raffles/index.rb
<h1>Current Raffles:</h1>
  <%= form_tag(raffles_path, method: 'get') do %>
    <%= select_tag(Raffle.pluck(:category).uniq, params[:filter]) %>
    <%= submit_tag ("Filter") %>
  <% end %>

कोई विचार?

0
burner1up 4 अक्टूबर 2020, 23:51

1 उत्तर

सबसे बढ़िया उत्तर

select_tag पर आपके कॉल में पहले पैरामीटर पर नाम नहीं है , और आपके विकल्पों की सूची भी बनाई जानी चाहिए।

संपत्ति सूची बनाने के लिए आप सहायक का उपयोग कर सकते हैं options_for_select

यदि आप किसी चयनित मान को परिभाषित करना चाहते हैं, तो आप उसे options_for_select पर भी भेज सकते हैं।

आपके उदाहरण के आधार पर, यह काम करना चाहिए:

<%= select_tag(:filter, options_for_select(Raffle.pluck(:category).uniq, params[:filter])) %>

एक अच्छा स्रोत जब आपके पास प्रश्न होते हैं कि एक निश्चित प्रपत्र सहायक कैसे काम करता है https://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags

2
José Coelho 5 अक्टूबर 2020, 00:28