允许表单参数

时间:2017-04-10 20:54:35

标签: ruby-on-rails carrierwave ruby-on-rails-5

我正在尝试在控制器中允许某些参数,但我似乎无法找到正确的方法。

我上传多个文件的观点是:

Employee e;

// Verbose output to cout
std::cout << Employee_NS::verbose<true> << e; 

std::ofstream out("test.txt");

// Verbose output to the file
out << Employee_NS::verbose<true> << e; 

// Non-verbose output to the file
out << Employee_NS::verbose<false> << e; 

在我的控制器中,这些文件位于params:

<%= form_for :photo, url: {action: "create"} do |f| %>
  <%= f.label :title %>
  <%= f.text_field :title %>
  <br>
  <%= f.file_field :photos, multiple: true %>
  <br>
  <%= f.submit "Upload Image"%>
<% end %>

但我不确定如何正确地允许使用以下代码上传文件,类似于显示here的示例:

params['photo']['photos'][..n..]

并且有一种方法可以更方便地访问文件,例如:

  def create
    @photo = Photo.new(photo_params)
    @photo.save!
    @photo.file_names[..n..].url 
  end

  private
    def photo_params
      # permit here
    end

1 个答案:

答案 0 :(得分:1)

标准方式是:

def photo_params
  params.require(:photo).permit(:title, :photos)
end

然后,您可以通过photo_params[:photos]访问您的照片。

如果photos实际上是一个数组,则需要将其作为数组允许:

def photo_params
  params.require(:photo).permit(:title, photos: [])
end