Ruby on rails 将参数从控制器发送到模型rails
我正在开发Meetup Api。 我想将一些会议从API保存到我的数据库中。 保存会议取决于传递到控制器视图中的参数:Ruby on rails 将参数从控制器发送到模型rails,ruby-on-rails,api,model,controller,Ruby On Rails,Api,Model,Controller,我正在开发Meetup Api。 我想将一些会议从API保存到我的数据库中。 保存会议取决于传递到控制器视图中的参数: <%= link_to 'See conferences', conferences_path(:title => "ParisRb")%> | conferences\u controller.rb class ApiMeetup BASE_URI = "https://api.meetup.com" def events(urlname)
<%= link_to 'See conferences', conferences_path(:title => "ParisRb")%> |
conferences\u controller.rb
class ApiMeetup
BASE_URI = "https://api.meetup.com"
def events(urlname)
HTTParty.get(BASE_URI + "/#{urlname}/events")
end
end
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
#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
conference.rb
class ApiMeetup
BASE_URI = "https://api.meetup.com"
def events(urlname)
HTTParty.get(BASE_URI + "/#{urlname}/events")
end
end
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
#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
#仅保留请求的会议
def自检过滤器(数据)
请求的_会议=[]
数据。每个do事件|
如果事件[“name”].include('ParisRb')#这应该接收参数[:title],而不是'ParisRb'
这其实很明显。
我只需要将参数传递给我的方法:
filtered_conferences=Conference.conferences_filter(api_数据,参数[:title])
#仅保留请求的会议
def self.u过滤器(数据、标题)
请求的_会议=[]
数据。每个do事件|
如果事件[“名称”]。包括?(标题)
我有点困惑。由于您已经查询了HTTParty.get(BASE_URI+“/{urlname}/events”)
,因此返回的事件仅限于urlname
,即ParisRb
,它不会包括任何其他meetup组的事件。因此,无需在模型中再次检查。除非你想检查事件的名称,这就是你在模型方法中所做的。哦,是的,你完全正确!我的代码中有一个无用的步骤