首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传文件“名称不能为空白”时出错

上传文件“名称不能为空白”时出错
EN

Stack Overflow用户
提问于 2013-12-01 17:45:51
回答 1查看 92关注 0票数 0

我试图在我的Rails应用程序中添加上传和下载文件的选项,但是当我试图上传我的文件时,我一直收到这个错误:

代码语言:javascript
复制
name can't be blank

这是我的密码:

newsletters_controller.rb:

代码语言:javascript
复制
class NewslettersController < ApplicationController
  def index
    @newsletters = Newsletter.all
  end

  def new
    @newsletter = Newsletter.new
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @newsletter }
    end
  end

  def create
    @newsletter = Newsletter.new(newsletter_params)

    if @newsletter.save
      redirect_to newsletters_path, notice: "The newsletter #{@newsletter.name} has been    uploaded."
    else
      render "new"
    end
  end

  def destroy
    @newsletter = Newsletter.find(params[:id])
    @newsletter.destroy
    redirect_to newsletters_path, notice:  "The newsletter #{@newsletter.name} has been  deleted."
  end

  private
  def newsletter_params
    params.require(:newsletter).permit(:newsletter, :attachment)
  end
end

index.html.erb:

代码语言:javascript
复制
<% if !flash[:notice].blank? %>
<div class="alert alert-info">
  <%= flash[:notice] %>
</div>
<% end %>
<br />
<%= link_to "New Newsletter", new_newsletter_path, class: "btn btn-primary" %>
<br />
<br />
<table class="table table-bordered table-striped">
  <thead>
    <tr>
      <th>Name</th>
      <th>Download Link</th>
      <th>&nbsp;</th>
    </tr>
  </thead>
  <tbody>
    <% @newsletters.each do |newsletter| %>
    <tr>
      <td><%= newsletter.name %></td>
      <td><%= link_to "Download Newsletter", newsletter.attachment_url %></td>
      <td><%= button_to "Delete",  newsletter, method: :delete, class: "btn btn-danger",  confirm: "Are you sure that you wish to delete #{newsletter.name}?" %></td>
    </tr>
    <% end %>
  </tbody>
</table>

new.html.erb:

代码语言:javascript
复制
<% if !@newsletter.errors.empty? %>
<div class="alert alert-error">
  <ul>
    <% @newsletter.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
    <% end %>
  </ul>
</div>
<% end %>

<div class="well">
  <%= form_for @newsletter, html: { multipart: true } do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.label :attachment %>
  <%= f.file_field :attachment %>
  <%= f.submit "Save", class: "btn btn-primary" %>
  <% end %>
</div>

routes.rb:

代码语言:javascript
复制
resources :newsletters, only: [:index, :new, :create, :destroy]
root "newsletters#index"
get "newsletters/index"
get "newsletters/new"
get "newsletters/create"
get "newsletters/destroy"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-01 17:48:13

改变:

代码语言:javascript
复制
params.require(:newsletter).permit(:newsletter, :attachment)

至:

代码语言:javascript
复制
params.require(:newsletter).permit(:newsletter, :attachment, :name)

这样,模型将从表单中接收到名称,验证就会成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20315220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档