ruby-on-rails - Ruby on Rails 表单未在选择多个字段中捕获值
问题描述
我按照此处的示例为我的表单创建了一个多选元素:Ruby on Rails -- multiple selection in f.select
但是,单击提交按钮时,不会捕获选择字段中的值。使用复选框时我遇到了同样的问题。不过,当我将其更改为文本字段时,它会起作用。我错过了一些明显的东西吗?如何捕获用户从选择字段中选择的值?我的代码如下。
形式:new.html.erb
<%= form_for @service do |f| %>
<div class="row">
<h3>Operating hours</h3>
<p>Please select the days you are open. Hold CTRL (Windows) or Command (Mac) to select multiple.</p>
<div class="form-group">
<div class="col-md-6">
<%= f.select(:work_days, [['Monday', 'Monday'],
['Tuesday', 'Tuesday'],
['Wednesday', 'Wednesday'],
['Thursday', 'Thursday'],
['Friday', 'Friday'],
['Saturday', 'Saturday'],
['Sunday', 'Sunday']
],{},
{ :multiple => true, :size => 7 }
) %>
</div> <!-- .col-md-6 -->
</div> <!-- .form-group -->
</div> <!-- .row -->
<!-- the code in the div below works -->
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="work_days">work days</label>
<%= f.text_field :work_days, placeholder: "Type the days you are available", class: "form-control", required: true, id: "work_days" %>
</div>
</div>
</div> <!-- .row -->
<div class="text-center">
<%= f.submit "Save", class: "btn btn-success" %>
</div>
<% end %>
相关控制器代码:services_controller.rb
class ServicesController < ApplicationController
# require the user to be logged in to edit and create, but not to view
before_action :set_service, except: [:index, :new, :create]
before_action :authenticate_user!, except: [:show]
before_action :is_authorised, only: [:listing, :update]
def new
@service = current_user.services.build
end
def create
@service = current_user.services.build(service_params)
if @service.save
redirect_to listing_service_path(@service), notice: "Saved..."
else
flash[:alert] = "Something went wrong..."
render :new
end
end
private
def set_service
@service = Service.find(params[:id])
end
def service_params
params.require(:service).permit(:title, :description, :work_days, :open_time, :close_time)
end
end
解决方案
在service_params
,work_days
应该接受一个数组,因此它将接受多个值:
def service_params
params.require(:service).permit(
:title,
:description,
:open_time,
:close_time,
work_days: []
)
end
推荐阅读
- azure-active-directory - 旧版 Azure AD 应用注册中的“授予权限”按钮与新体验中的“授予管理员许可”有何不同?
- javascript - 从外部脚本更改或访问 Vue.js 方法
- kubernetes - 等待部署真正缩小的惯用方式
- python - 自定义 Tensorflow 数据集的类型规范
- c# - 如何仅使用组织中的 Azure Active Directory 访问 Azure Blob 存储中的 Blob 数据
- wordpress - the_tags() 与 ACF
- javascript - 我需要创建 RegExp 来验证 URL
- python - 如何在游戏示例中处理非常深的递归调用
- swift - Uber Needle DI 在非反应性上下文中的使用
- android - 如何测试 Robolectric 中的偏好设置?