【问题标题】:Submitted form values aren't shown in the corresponding View提交的表单值未显示在相应的视图中
【发布时间】:2012-03-04 07:28:24
【问题描述】:

这是表格:

      <%= 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 时,我在控制台中看到了这一点:

在 2012 年 2 月 12 日 14:16:10 开始为 127.0.0.1 发布“/home/tellafriend” -0400 由 HomeController#tellafriend 处理为 HTML

参数:{"utf8"=>"✓",
"authenticity_token"=>"2N1jNQ30cXCU4YANQ3FEZFBBTNhKobCQUwj1rEZ3Mxw="}

在布局/应用程序中渲染 home/tellafriend.html.erb (0.0ms) 在 20 毫秒内完成 200 次 OK(查看次数:11.9 毫秒 | ActiveRecord:0.0 毫秒)

这是否意味着我的价值观没有被发布?有什么建议吗?


编辑

为每个 HTML 输入元素添加了 name 属性,现在正在发布值:

在 2012-02-12 14:23:39 开始为 127.0.0.1 发布“/home/tellafriend” -0400 由 HomeController#tellafriend 处理为 HTML 参数:{"utf8"=>"✓", "authenticity_token"=>"2N1jNQ30cXCU4YANQ3FEZFBBTNhKobCQUwj1rEZ3Mxw=", "姓名"=>"塞尔吉奥", "电子邮件"=>"stapia.gutierrez@gmai", "message"=>"asdf"} 内渲染 home/tellafriend.html.erb 布局/应用程序(0.4 毫秒)在 40 毫秒内完成 200 次 OK(查看:26.9 毫秒 | 活动记录:0.0ms)

但是视图仍然不呈现值。

【问题讨论】:

    标签: html ruby-on-rails ruby ruby-on-rails-3 post


    【解决方案1】:

    您的input 字段缺少name 属性:

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

    更新答案:

    erb 中的&lt;% %&gt; 执行括号内的代码,但不会打印到模板。

    你还需要改变你的观点:

    &lt;p&gt;&lt;% @name %&gt;&lt;/p&gt;&lt;p&gt;&lt;%= @name %&gt;&lt;/p&gt;

    【讨论】:

    • 好的,现在根据控制台,值正在正确发布,但视图仍然没有呈现值。
    • 啊,我第一次错过了:在erb中,您需要将=添加到括号中才能打印结果。我已经更新了我的答案。
    最近更新 更多