Rails:在索引上呈现表单

Jer*_*myE 5 ruby-on-rails

我希望能够在索引页面上使用 <%= render 'form' %> 。这是正确的方法吗?它似乎有效,但是,我只想确保这是执行此操作的正确方法。

class RemindersController < ApplicationController  
... 
    def index
      @reminders = Reminder.all
      @reminder = Reminder.new 
    end
....
Run Code Online (Sandbox Code Playgroud)

Rya*_*n K 4

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

<%= form_for @reminder, url: {controller: "reminders", action: "create"} do |r| %>
  <form code goes here>
  <%= r.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

“编辑”表单将类似于:

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

编辑

如果您希望将整个表单包含在 _form.html.erb 部分中,您还可以传入 url 作为参数,如下所示:

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

然后在你的部分里面:

<%= form_for @reminder, url: path %>
Run Code Online (Sandbox Code Playgroud)