将表单结果保存到Rails中的文本文件

时间:2014-08-27 14:26:29

标签: ruby-on-rails forms file controller

我有这样的表格:

<%= form_tag(:action => "save", method: "post") do %>
  <%= label_tag(:email, "Email") %>
  <%= text_field_tag(:email) %>
  <%= submit_tag("Submit") %>
<% end %>

我需要将结果保存到文件中,我目前正在使用CSV,但文件类型并不重要:

def save

  require "csv"
  CSV.open "output.csv", "a+" do |csv|
    csv << [ "#{params[:email]"]
  end
  render :none
  redirect_to "/thanks"
end

在我的路线中,我有:

get 'form', to: "static_pages#form"
get 'form/submit', to: "static_pages#save"
get 'form/thanks', to: "static_pages#thanks"

目前生成了CSV,但参数没有保存到它,而且它没有重定向,我只是在/ submit上找不到404

1 个答案:

答案 0 :(得分:2)

您的表单和路线不正确。 <%= form_tag('/form/submit') %>默认方法是POST,因此您无需指定它。

应根据方法更改路线: post 'form/submit', to: 'static_pages#save'

PS:我相信你应该使用RESTful,但我看不到你的应用程序的全貌。

PPS:你在重定向时不应该进行渲染。

PPPS:在你的方法中不要require 'csv',而是在文件的最开头,在你的类定义之前。