参与控制器

时间:2015-11-20 14:57:37

标签: ruby-on-rails ruby

在我的项目中我得到了一个视图,在这个视图中我有一个这样的日期输入:

<%= form_tag installations_path, :method => :csv, :class => 'form-search' do %>
<%= select_date(date = Date.current, options = {}, html_options = {}) %>
<%= submit_tag "Save" %>
<% end %>

在我的控制器安装中,我得到了一个名为&#34; csv&#34;的方法。这个方法生成一个Csv。例如:

def csv
  @consumption = current_user.get_consumptions(params[:year])
  respond_to do |format|
      format.html
      format.csv { send_data @consumption.to_csv }
  end
end

当我执行视图时,我收到此错误:

param is missing or the value is empty: installation

问题是在我的installed_pa​​rams中我需要(:安装)因为我在其他方法中使用对象安装。

def installation_params
    params.require(:installation).permit(:year,...)
end

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

  1. 请求日志可能会对您有所帮助。
  2. 如果您将csv生成为GET请求,请更改代码

    从:

    <%= form_tag installations_path, :method => :csv, :class => 'form-search' do %>
    

    为:

    <%= form_tag csv_installations_path, :method => :get, :class => 'form-search' do %>
    

    确保csv_installations_path存在。

  3. 然后,如果您的输入名为year,则可以将params[:year]参数设为year

  4. 最后,你没有在csv方法中使用任何install_params

  5. 希望它对你有所帮助。