【发布时间】:2017-01-14 19:34:21
【问题描述】:
所以我试图从 Rails 5 中的单个表单创建多个对象。这在 Rails 4.2 中工作得非常好,我不确定是什么导致了错误(我想它与看法)。
升级到 rails 5 后我遇到的另一个问题是我的表单现在只提交最后一条记录。我将此演练用作参考:http://vicfriedman.github.io/blog/2015/07/18/create-multiple-objects-from-single-form-in-rails/
This is the input 和 这是我要发送的参数。
Parameters: {"utf8"=>"√", "authenticity_token"=>"3j8A0oNW3sM5VIi11ZEHwpwlAhvY3
vml1kcLHfWdptySKSeJokRmBXObh/HEFBwG4/QC8PdfX7NKbkrGjOfI6Q==", "exercise_id"=>"16
5", "exercise_sets"=>{"reps"=>"1", "weight"=>"1"}, "exerciseName"=>"imsick", "co
mmit"=>"Save changes"}
错误
NoMethodError (undefined method 'permit' for "reps":string)
ExerciseSetsController:
def create
if current_trainer
savedMirror = current_trainer.exercises.find_by_name(params[:exerciseName])
params['exercise_sets'].each do |set|
#set[:timeFormat] = savedMirror.exercise_sets[0].timeFormat
#set[:weightFormat] = savedMirror.exercise_sets[0].weightFormat
#set[:distanceFormat] = savedMirror.exercise_sets[0].distanceFormat
ExerciseSet.create(exercise_set_params(set))
end
flash[:notice] = "Sets added"
redirect_to (:back)
end
end
private
def exercise_set_params(e_params)
e_params.permit(:id, :reps, :weight, :weightFormat, :time, :timeFormat, :distance, :distanceFormat, :exercise_id, :_destroy)
end
查看:
<%savedMirror = current_trainer.exercises.find_by_name(e.name)%>
<%= form_tag url_for(controller: "exercise_sets", action: "create") do%>
<ul class="list-group">
<% e.sets.times do |i|%>
<%= fields_for "exercise_sets[]", @exerciseSet do |f| %>
<li class="list-group-item">
<label>Set: <%=i+1%></label>
<%#= f.number_field :user_id, value: e.user_id, style:"visibility:hidden; margin:-15px;"%>
<%= hidden_field_tag(:exercise_id, e.id) %>
<div class = "row">
<% if savedMirror.exercise_sets[0].reps == 1%>
<div class="col-sm-3">
<%= f.label :reps, "Reps" %><br>
<%= f.text_field :reps, class: "form-control"%>
</div>
<%end%>
<% if savedMirror.exercise_sets[0].weight == 1%>
<div class="col-sm-3">
<%= f.label :weight, "Weight" %><br>
<%= f.text_field :weight, class: "form-control"%>
</div>
<%end%>
<% if savedMirror.exercise_sets[0].time == 1%>
<div class="col-sm-3">
<%= f.label :time, "Time" %><br>
<%= f.text_field :time, class: "form-control"%>
</div>
<%end%>
<% if savedMirror.exercise_sets[0].distance == 1%>
<div class="col-sm-3">
<%= f.label :distance, "Distance" %><br>
<%= f.text_field :distance, class: "form-control"%>
</div>
<%end%>
</div>
</li>
<%end%>
<%end%>
<br>
<%= hidden_field_tag(:exerciseName, e.name) %>
<%=submit_tag%>
</ul>
<% end %>
<%end%>
非常感谢任何帮助,谢谢!
【问题讨论】:
-
您能否用您对 Rails 代码所做的更改来回答,并在一天后将其标记为回答?
-
好点,已发布!
标签: html ruby-on-rails