在未连接到form_for控制器的视图中处理Rails form_for。

时间:2016-04-18 21:37:49

标签: ruby-on-rails ruby forms model-view-controller

所以经过一段时间后会有轻微的头痛。我能够得到一个Rails版本的表格。虽然我能够让它工作,但我不知道它是否是最好的做法,因为感觉有点偏。我的网站上有一个用于在目标网页上注册的表单。着陆页为static_pages#home。我为我的用户控件_new.html.erb创建了一个已包含在我的目标网页上的部分内容。这是我的表格:

<!-- Main Form -->
<div class="login-form-1">
  <!-- <form id="register-form" class="text-left"> -->
    <div class="login-form-main-message"></div>
    <div class="main-login-form">
      <div class="login-group">
        <%= form_for(@user) do |f| %>
        <div class="form-group">
          <%= f.text_field :first_name, :class => "form-control", :placeholder => "First Name" %>
        </div>
        <div class="form-group">
          <%= f.text_field :last_name, :class => "form-control", :placeholder => "Last Name" %>
        </div>
        <div class="form-group">
          <%= f.text_field :user_name, :class => "form-control", :placeholder => "User Name" %>
        </div>
        <div class="form-group">
          <%= f.email_field :email, :class => "form-control", :placeholder => "Email" %>
        </div>
      </div>
      <button class="login-button"><%= f.submit "", :class => "remove-button" %></button>
      <% end %>
    </div>
    <div class="etc-login-form">
      <p>already have an account? <a href="#">login here</a></p>
    </div>
  <!-- </form> -->
</div>
<!-- end:Main Form -->

这有点乱,因为我添加了很多样式。需要注意的是我如何呈现form_for。我已将@user的对象传递给它。通常情况下,此@user会在Users#new操作中找到;但是,使此表单正常运行的唯一方法是让Static_pages#home通过设置@user = User.new来处理它。这样做似乎不正确,但是,我似乎找不到更好的方法来解决这个问题。最初我要做的就是提交此表单,点击Users#create操作。我已尝试传递form_for(:用户,:用户,&#34; / users&#34;),但在尝试此操作时尝试点击Static_pages#create操作。

总而言之,我的问题围绕着这是否是一种正确的处理方式,如果不是更合适的方式。同样,我能够让这个工作,但这是通过每次访问我的目标网页@user = User.new时设置Static_pages#home。感谢您抽出宝贵时间回答这个问题。

1 个答案:

答案 0 :(得分:0)

这是好的,完全可以接受。我甚至想写form_for User.new

请记住,在大多数&#34;现实&#34;页面,可以找到超过1个资源。例如。 about页面上的登录表单,posts页面上的标签云,因此控制器可能需要检索多于一种类型的对象。

从理论上讲,如果您的网页由断开连接/独立区域组成(例如,1个区域=帖子及其评论,另一个是最新评论列表),您还可以考虑使用cells。< / p>