Скрытое поле не отображается Rails 4

Руби 2.0 Рельсы 4.1 Windows 8.1

Вот моя форма:

<%= bootstrap_form_for(@agent, layout: :horizontal, label_col: "col-sm-2", control_col: "col-sm-10", :multipart => true) do |f| %>
  <%= f.error_summary %>

  <div class="form-inputs">
      <%= f.text_field :first %>
      <%= f.text_field :last %>
      <% f.hidden_field :blah, :value => "hold" %>
      <% f.hidden_field :blah_blah, :value => "hold" %>
      <%= f.file_field :uploaded_file, label: "Image" %>
  </div>
  <p>
    <%= f.form_group do %>
      <%= f.submit class: "btn btn-primary" %>
    <% end %>
  </p>

<% end %>

Когда я отправляю свою форму, вот что я получаю (из файла журнала):

Processing by AgentsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"gBOBu9BVo8RQ5UD103KNP1daEvEA76AbhTWbCI1NfM8=", "agent"=>{"first"=>"John", "last"=>"Doe", "uploaded_file"=>#<ActionDispatch::Http::UploadedFile:0x00000006939ff8 @tempfile=#<Tempfile:C:/Users/Mine/AppData/Local/Temp/RackMultipart20140606-6100-13wmcxn>, @original_filename="johndoe.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"lobbyist[uploaded_file]\"; filename=\"johndoe.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Create agent"}

бла и бла_бла не появляются. Что я делаю не так?


person EastsideDev    schedule 07.06.2014    source источник


Ответы (2)


Вам нужно = после <%. Это говорит рельсам интерпретировать это как код. У вас есть = после других <%.

person zyl1024    schedule 07.06.2014

Несмотря на то, что blah и blah-blah являются скрытыми полями, они все равно должны отображаться. Разница:

  • <% встроенная логика. Это никогда не отобразит HTML в представлении.
  • <%= встроенный код, отображающий HTML. Ruby должен отображаться в шаблоне.

Оно скрыто, потому что тип поля HTML — hidden, но код по-прежнему встраивается Ruby в представление.

Например, это

<%= f.hidden_field :blah, :value => "hold" %>

становится таким в браузере:

<input id="agent_blah" name="agent[blah]" type="hidden" value="hold">

Итак, это будет работать:

#code above omitted

<div class="form-inputs">
    <%= f.text_field :first %>
    <%= f.text_field :last %>
    <%= f.hidden_field :blah, :value => "hold" %>
    <%= f.hidden_field :blah_blah, :value => "hold" %>
    <%= f.file_field :uploaded_file, label: "Image" %>
</div>

# rest of code
person gregb    schedule 07.06.2014