Ruby on rails 如何使用icalendar文件中的数据创建新对象
我有一个名为event的模型,它的属性是:Ruby on rails 如何使用icalendar文件中的数据创建新对象,ruby-on-rails,Ruby On Rails,我有一个名为event的模型,它的属性是: string "name" string "location" string "lecturer" date "start_time" date "end_time"` 我想从icalendar类型文件中获取数据并创建事件实例。我该怎么做?我尝试在events_controller.rb中执行一个方法: 那我该怎么办呢?我应该在视图中调用此函数,还是应该将此代码带到名为create的方法中,该方法如下
string "name"
string "location"
string "lecturer"
date "start_time"
date "end_time"`
我想从icalendar类型文件中获取数据并创建事件实例。我该怎么做?我尝试在events_controller.rb中执行一个方法:
那我该怎么办呢?我应该在视图中调用此函数,还是应该将此代码带到名为create的方法中,该方法如下所示:
def create
@event = Event.new(event_params)
respond_to do |format|
if @event.save
format.html { redirect_to @event, notice: 'Event was successfully created.' }
format.json { render :show, status: :created, location: @event }
else
format.html { render :new }
format.json { render json: @event.errors, status: :unprocessable_entity }
end
end
end
my understanding calendar2.ics有许多记录,如果要循环遍历calendar2.ics中的所有事件并将其保存到事件表中,请将ics文件导入事件表 下面是示例步骤,在routes文件中创建一个方法
resources :events do
collection {
get :transfer_data_from_ics
}
end
在events\u控制器中,您创建了两种方法
def transfer_data_from_ics
# get data from ics
@ievent_file = File.open("calendar2.ics")
@ievents = Icalendar::Event.parse(@ievent_file)
# loop through
@ievents.each do |i_event|
Event.create(
name: i_event.summary,
location: i_event.location,
lecturer: i_event.description,
start_time: i_event.dtstart,
end_time: i_event.dtend)
end
# route back to events list
redirect_to events_path
end
要获得调用的方法,您可以创建带有链接的菜单/按钮,如下所示:
<%= link_to "Transfer data", transfer_data_from_ics_events_path %>
我做了你在这里写的,所以现在我应该把这个方法叫做什么地方吗?因为当我输入localhost:3000/events时,我看不到任何事件/events是我使用名为index的方法显示所有事件的路径–Okey我保存了进入localhost:3000/events/transfer_data_from_ics的所有数据。只是好奇,我可以用另一种方式来做吗,或者我应该一直进去。/。。。。。。。要完成这个方法吗?是的,你可以检查我刚才在底部添加的答案
<%= link_to "Transfer data", transfer_data_from_ics_events_path %>