У меня есть поиск по моей проблеме, но я не могу найти решение.Проверка не работает - параметр отсутствует или значение пуста несущей волны
Моя модель home
с атрибутами, такими как: title
, logo
, description
, keywords
.
Я использую carrierwave + замедленное задание для закачать logo
, загрузка работа (создание & обновления), но когда файл/входной файл пуст, я получил эту ошибку:
ActionController::ParameterMissing in SettingsController#home_update_b
param is missing or the value is empty: home
Extracted source (around line #99):
def home_update_b_params
params.require(:home).permit(:logo)
end
end
SettingsController
def index
## get one record without params
@home = Home.take
end
def home_update_b
@home = Home.find(params[:id])
if @home.update(home_update_b_params)
respond_to do |format|
format.html { redirect_to setting_home_path, :notice => "Logo successfully updated" }
format.json { head :no_content }
end
else
respond_to do |format|
format.html {
flash[:alert] = "There's Something Wrong"
render :action => :home
}
format.json { render json: @home.errors, status: :unprocessable_entity }
end
end
end
private
def home_update_b_params
params.require(:home).permit(:logo)
end
Я уверен, что на home
модели имеют проверки
class Home < ActiveRecord::Base
mount_uploader :logo, LogoUploader
after_save :enqueue
validates_presence_of :logo
end
форма
<%= form_for(@home, :url => logo_update_path(@home), :html => { :class => "form-horizontal", :role => "form", :method => :put}) do |f| %>
<div class="form-group">
<%= f.label :logo, "Logo", :class => 'col-sm-3 control-label no-padding-right ace-file-input' %>
<div class="col-sm-4">
<%= f.file_field :logo, "data-file-input" => "easy" %>
</div>
</div>
<div class="clearfix form-actions">
<div class="col-md-offset-3 col-md-9">
<%= f.submit %>
</div>
</div>
<% end %>
трассировки стека
Processing by SettingsController#home_update_b as HTML
Parameters: {"utf8"=>"V", "authenticity_token"=>"gmXtbe31vfSPqM1N5taM1ge92nRvr
SpY91Y8vAlEBmc=", "commit"=>"Update Home", "id"=>"2"}
←[1m←[36mHome Load (0.0ms)←[0m ←[1mSELECT "homes".* FROM "homes" WHERE "hom
es"."id" = $1 LIMIT 1←[0m [["id", 2]]
Completed 400 Bad Request in 4ms
ActionController::ParameterMissing (param is missing or the value is empty: home
):
app/controllers/settings_controller.rb:99:in `home_update_b_params'
app/controllers/settings_controller.rb:60:in `home_update_b'
Когда я добавить еще один атрибут для формирования (например, title
), входной файл по-прежнему пуст, и это работает для обновления, но проверка не работает для входного файла пуст ,
FYI Rails 4.1.1 и 1.9.3 рубин
Почему вы используете 'button_tag' вместо' f.submit' или 'f.button'? –
Могу ли я использовать значок ('' tag) с 'f.submit'? Я думаю, что нет причин для моей проблемы, потому что я использую это для новой формы, и это работает. Также используйте по-прежнему ошибку 'f.button'. – itx
Вы можете с 'f.button', как я написал в своем ответе. –