Как добавить скрытое поле в form_with?

Я пытаюсь добавить скрытое поле в form_with.

Вот 3 попытки (и результаты / сообщения об ошибках)

Первая попытка

Источник: https://guides.rubyonrails.org/form_helpers.html

<% = hidden_field_tag ​​(: parent_id, "5")%>

Поэтому я стараюсь:

       <%= form_with(model: @message, method: :post) do |f| %> 
<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field_tag :user_id, current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

Вторая попытка

Источник: https://api.rubyonrails.org/v6.0.3/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field

Пример: hidden_field(:signup,:pass_confirm)

Поэтому я пытаюсь

       <%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field :user_id, current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

но

Третья попытка

Это идет дальше, чем две другие попытки, потому что, по крайней мере, загружается представление представления, а не возникает ошибка.

       <%= form_with(model: @message, method: :post) do |f| %> 
<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field user_id: current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

Но отправляемый параметр

       Unpermitted parameter: :{:user_id=>21}

т.е. он содержит некоторые лишние знаки препинания, которых он не должен содержать (я думаю, что это был вложенный хеш или что-то в этом роде?)

2 ответа

У вас есть синтаксис ошибки. Если вы хотите передать значение в скрытое поле с помощью параметра:value.

<%= f.hidden_field :user_id, :value => current_user.id %>

Вот что сработало <%= f.hidden_field :user_id, value: current_user.id %>

т.е.

<%= form_with(model: @message, method: :post) do |f| %> 
<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field :user_id, value: current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

где

  • :user_id это имя параметра (измените на имя вашего параметра)
  • value: просто говорит form_with значение будет следующим (т.е. не меняйте это)
  • current_user.id фактическое значение (изменить на свое значение)

На основании этого ответа

Другие вопросы по тегам