Ruby on rails 如何使用icalendar文件中的数据创建新对象

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的方法中,该方法如下

我有一个名为event的模型,它的属性是:

     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 %>