Я работаю над Meetip Api. Я хотел бы сохранить некоторые конференции из API в мою базу данных. спасительных конференций зависят от параметров, проходящих в поле зрения к контроллеру:Отправить параметры от контроллера к модели рельсов
<%= link_to 'See conferences', conferences_path(:title => "ParisRb")%> |
Затем я вызвать хороший метод, чтобы искать хорошие конференции (по сравнению с Params) среди всех один получил от API. Я хотел бы, чтобы методы были очень универсальными и позволяли сохранять любые конференции не только «ParisRb».
Поэтому я изменяю все свои методы в этой цели, но есть один, который я не могу изменить, я не знаю, как это сделать.
Это - весь мой код. Тот, который я хотел бы изменить, - это self.conferences_filter(data)
, который должен получать параметры от контроллера вместо «ParisRb». Но я знаю, что передача параметров от контроллера к модели не является хорошей практикой. Таким образом, любая идея приветствуется :)
Библиотека/api_meetup.rb
class ApiMeetup
BASE_URI = "https://api.meetup.com"
def events(urlname)
HTTParty.get(BASE_URI + "/#{urlname}/events")
end
end
conferences_controller.rb
def index
#call to the API
response = ApiMeetup.new.events(params[:title])
api_data = JSON.parse(response.body)
filtered_conferences = Conference.conferences_filter(api_data)
conferences = Conference.save_conferences_from_api(filtered_conferences)
@conferences = conferences.current_conferences
end
conference.rb
#Keep only requested conferences
def self.conferences_filter(data)
requested_conferences = []
data.each do |event|
if event["name"].include?('ParisRb') #This should receive params[:title] instead of 'ParisRb'
requested_conferences << event
end
end
requested_conferences
end
#Save requested conferences from the Meetup API
def self.save_conferences_from_api(conferences)
# data = data_from_api
conferences.each do |line|
conference = self.new
conference.title = line['name']
conference.date = format_date(line['time'])
conference.url = line['link']
if conference.valid?
conference.save
end
end
self.all
end
Я немного запутался. поскольку вы уже запрашиваете 'HTTParty.get (BASE_URI +"/# {urlname}/events ")', возвращаемые события ограничиваются только 'urlname', который является' ParisRb', он не будет включать в себя другие события групп встреч. поэтому нет необходимости снова проверять модель. Если вы не хотите проверять имя события, что вы делаете в методах модели. – lusketeer
О да, вы совершенно правы! В моем коде есть один бесполезный шаг – Orsay