ruby-on-rails - 使用 rails 形式的参数
问题描述
我实际上是一名学生,我正在做一个大致完成的小项目,除了我被一个显示活动的表格所困。每次用户选择一个活动时,我希望该活动已经填满,但实际上,它总是被表单提供的第一个活动锁定(只有 Url 很好,但表单上没有任何事情发生)。
如果它是以“好的方式”写的,我不会,但我的表格是这样的 (_form.html.erb) :
<%= form_with(model: activity, local: true) do |form| %>
<% if activity.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(activity.errors.count, "error") %> prohibited this activity from being saved:</h2>
<ul>
<% activity.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="form-group">
<%= form.label :activities, class:'activity_title' %>
<%= form.select :activities, options_for_select(['Running', 'Fitness', 'Rugby', 'Crossfit', 'Track&Field', 'Walk', 'Volleyball', 'Football', 'Basketball', 'Swimming', 'Dancing','Handball']), {:params => @activity.activities}, class: 'form-control' %>
</div>
<div class="field">
<%= form.label :duration , class:'duration_title' %>
<%= form.number_field :duration %>
</div>
<div class="fielddate">
<%= form.label :date , class:'date_title' %>
<%= form.datetime_select :date %>
</div>
我对这个参数有很大的疑问,尤其是 {:params => @activity.activities}:
<div class="form-group">
<%= form.label :activities, class:'activity_title' %>
<%= form.select :activities, options_for_select(['Running', 'Fitness', 'Rugby', 'Crossfit', 'Track&Field', 'Walk', 'Volleyball', 'Football', 'Basketball', 'Swimming', 'Dancing','Handball']), {:params => @activity.activities}, class: 'form-control' %>
</div>
活动控制器.rb:
class ActivitiesController < ApplicationController
before_action :set_activity, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
# GET /activities
# GET /activities.json
def index
@activities = current_user.activities
end
# GET /activities/1
# GET /activities/1.json
def show
end
# GET /activities/new
def new
@activity = Activity.new(:activities => params[:activities])
puts @activity.activities
end
# GET /activities/1/edit
def edit
end
# POST /activities
# POST /activities.json
def create
@activity = Activity.new(activity_params)
@activity.user = current_user
respond_to do |format|
if @activity.save
format.html { redirect_to activities_url, notice: 'Activity was successfully created.' }
format.json { render :show, status: :created, location: @activity }
else
format.html { render :new }
format.json { render json: @activity.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /activities/1
# PATCH/PUT /activities/1.json
def update
respond_to do |format|
if @activity.update(activity_params)
format.html { redirect_to activities_url, notice: 'Activity was successfully updated.' }
format.json { render :show, status: :ok, location: @activity }
else
format.html { render :edit }
format.json { render json: @activity.errors, status: :unprocessable_entity }
end
end
end
# DELETE /activities/1
# DELETE /activities/1.json
def destroy
@activity.destroy
respond_to do |format|
format.html { redirect_to activities_url, notice: 'Activity was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_activity
@activity = Activity.find(params[:id])
end
# Only allow a list of trusted parameters through.
def activity_params
params.require(:activity).permit(:activities, :duration, :date)
end
end
如果您有任何解决方案可以分享,我将非常高兴!谢谢您的帮助。
解决方案
好吧,我自己找到了解决方案,有必要删除所有活动名称并将其替换为@activity.activities
<div class="form-group">
<%= form.label :activities, class:'activity_title' %>
<%= form.select :activities, options_for_select([ @activity.activities ]) %>
</div>
推荐阅读
- reactjs - Heroku 部署失败 - 无法导入 Sass 文件
- java - 输入后,println 不打印任何内容
- c# - “构建”后代码无法正常工作
- apache-kafka - Spring Kafka (2.2.7.RELEASE) 与。kafka-clients:2.2.1 嵌入式代理启动期间的 IOException
- javascript - Javascript:对象函数语法错误的深度比较
- hyperledger-fabric - 当我尝试使用 Hyperledger Fabric 创建通道时,请求失败
- javascript - 将 useState() 与事件侦听器一起使用时遇到问题。看不到更新的状态
- angular - 未捕获的 ReferenceError:__importDefault 未定义
- c# - 获取距离 x 到两个向量的 Vector2
- javascript - 功能中的图像效果不佳,即使身体中的图像有效