Rails:在索引上呈现表单

时间:2014-12-06 03:50:53

标签: ruby-on-rails

我希望能够使用<%= render' form' %GT;在索引页面上。这是正确的方法吗?它似乎工作,但是,我只是想确保这是正确的方法。

class RemindersController < ApplicationController  
... 
    def index
      @reminders = Reminder.all
      @reminder = Reminder.new 
    end
....

1 个答案:

答案 0 :(得分:4)

在索引视图中包含'new'/'edit'表单没有任何问题。这不是“正常”的Rails方式,但它会起作用。请记住,一旦您在页面上填写了表单,您仍然需要提交该表单(您一次只能提交一个表单)。这是有点棘手的地方。如果要从同一页面创建和更新提醒,则必须使用具有不同操作的不同表单。 “新”形式如下:

<%= form_for @reminder, url: {controller: "reminders", action: "create"} do |r| %>
  <form code goes here>
  <%= r.submit %>
<% end %>

和'edit'表单类似于:

<%= @reminders.each do |reminder| %>
  <%= form_for reminder, url: {controller: "reminders", action: "update"} do |r| %>
    <form code goes here>
    <%= r.submit %>
  <% end %>
<% end %>

修改

如果您希望整个表单位于_form.html.erb部分内,您还可以将URL作为参数传递,如下所示:

<%= render partial: 'form', locals: {path: {controller: "reminders", action: (create/update)}} %>

然后在你的部分内:

<%= form_for @reminder, url: path %>