Отправленные значения формы не отображаются в соответствующем представлении - PullRequest
0 голосов
/ 12 февраля 2012

Вот форма:

      <%= form_tag({:controller => "home", :action => "tellafriend"}, :method => "post", :class => "well form-horizontal") do %>
          <div class="control-group">
            <label class="control-label" for="input01">Your name:</label>
            <div class="controls">
              <input id="name" class="input-xlarge" type="text"/>
              <p class="help-block">Type in your name so your friends know you sent this.</p>
            </div>
          </div>

          <div class="control-group">
            <label class="control-label" for="input01">Friends email address:</label>
            <div class="controls">
              <input id="emails" class="input-xlarge" type="text"/>
              <p class="help-block">Who do you want to send this to? Separate different emails with a comma.</p>
            </div>
          </div>

          <div class="control-group">
            <label class="control-label" for="input01">Message:</label>
            <div class="controls">
              <textarea id="message" class="input-xlarge" type="text" rows="7"></textarea>
              <p class="help-block">Attach a special message your friends will read.</p>
            </div>
          </div>
          <button class="btn tell-a-friend-submit" type="submit">Send</button>
        <% end %> 

И мой контроллер:

class HomeController < ApplicationController
  def index
  end

  def tellafriend
    @name = params[:name]
    @emails = params[:emails]
    @message = params[:message]
  end  
end

И в моем файле конфигурации Routes:

post "home/tellafriend"

И, наконец, мой взгляд:

<p><% @name %></p>

Почему значение, которое я ввожу в "имя", не отображается в представлении?

И я вижу это в своей консоли, когда я делаю POST:

Запущен POST "/ home / tellafriend" для 127.0.0.1 в 2012-02-12 14:16:10 -0400 Обработка HomeController # tellafriend как HTML

Параметры: {"utf8" => "✓",
"authenticity_token" => "2N1jNQ30cXCU4YANQ3FEZFBBTNhKobCQUwj1rEZ3Mxw ="}

Отображение home / tellafriend.html.erb в макетах / приложении (0,0 мс) Завершено 200 OK за 20 мс (Просмотров: 11,9 мс | ActiveRecord: 0,0 мс)

Значит ли это, что мои значения не публикуются? Предложения?


Редактировать :

Добавлено в атрибут name для каждого элемента ввода HTML, и теперь значения POSTED:

Запущен POST "/ home / tellafriend" для 127.0.0.1 в 2012-02-12 14:23:39 -0400 Обработка HomeController # tellafriend в виде параметров HTML: {"utf8" => "✓", "Authenticity_token" => "2N1jNQ30cXCU4YANQ3FEZFBBTNhKobCQUwj1rEZ3Mxw =", "name" => "Sergio", "emails" => "stapia.gutierrez@gmai", "message" => "asdf"} Отображение home / tellafriend.html.erb в макеты / приложение (0,4 мс) Завершено 200 OK за 40 мс (Просмотров: 26,9 мс | ActiveRecord: 0,0 мс)

Однако представление по-прежнему не отображает значения.

1 Ответ

1 голос
/ 12 февраля 2012

В ваших input полях отсутствует атрибут name:

<input name="name" id="name" class="input-xlarge" type="text"/>

ОБНОВЛЕНИЕ ОТВЕТА:

<% %> в erb выполняет код в скобках, но не печатает в шаблон.

Вам также необходимо изменить свое мнение:

<p><% @name %></p> до <p><%= @name %></p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...