これで、Rails 5の1つのフォームから複数のオブジェクトを作成しようとしています。何が原因でエラーが発生しているのか(私はそれがビューと関係していると思います)。Rails - NoMethodError(定義されていないメソッド "permit" for "reps":string)
レール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コードの変更を答えて、それを1日後に回答としてマークできますか? –
良い点が掲載されました! –