Я использую Simple Form в приложении Rails, в котором контроллер FormsController был определен следующим образом:
class FormsController < ApplicationController
def index
@forms = Form.all
end
def new
@form = Form.new(form_params)
end
...
private
def form_params
params.require(:form).permit(:user, :name, :tag, :link, :repo)
end
end
Представление new
используется для получения некоторых входных данных от пользователя.
<div class="form">
<%= simple_form_for @param do |f| %>
<div class="form-inputs";>
<%= f.input :user %>
<%= f.input :name %>
<%= f.input :tag %>
<%= f.input :link %>
<%= f.input :repo %>
</div>
<div class="form-actions">
<%= f.button :submit, "Create", class: "btn-primary" %>
</div>
<% end %>
</div>
Я проверил, какое имя сгенерировано для каждого поля, используя inspect :
<input type="text" name="form[user]" id="form_user">
Печать параметров в контроллере при отправке формы возвращает:
{“user”=>”value1”, “name”=>”value2”, “tag”=>”value3”, “link”=>”value4”, “repo”=>”value5”}
С этого момента я хотел бы дублировать эту простую форму несколько раз. Итак, сначала я обновил имя поля с form[<parameter>]
на form[1][<parameter>]
.
<div class="form-inputs";>
<%= f.input :user, input_html: { name: 'form[1][user]' } %>
<%= f.input :name, input_html: { name: 'form[1][name]' } %>
<%= f.input :tag, input_html: { name: 'form[1][tag]' } %>
<%= f.input :link, input_html: { name: 'form[1][link]' } %>
<%= f.input :repo, input_html: { name: 'form[1][repo]' } %>
</div>
Теперь я получаю вывод параметров:
"form"=>{"1"=>{"“user”"=>"value1", "“name”"=>"value2", "“tag”"=>"value3", "“link”"=>"value4", "“repo”"=>"value5"}}
Как лучше всего динамически выделить идентификатор form[<id>][user]
в поле?
Можно ли получить параметры в следующем формате?
form => { 1 => {user: "user1" }, 2 => {user: "user2" }, 3 => {user: "user3" }.. }
form => { 1 => {name: "name1" }, 2 => {name: "name2" }, 3 => {name: "name3" }.. }
...
id
вы говорите? Объект, который вы создаете, или объект в другой модели? - person scilence   schedule 16.06.2020