【问题标题】:Rails: How to clear an edit form?Rails:如何清除编辑表单?
【发布时间】:2016-11-05 07:41:57
【问题描述】:

我有一个用于创建任务的简单表单,该表单使用@new_task 进行自定义以始终创建任务。使用单独的表单来更新它们。

#Form
<%= form_for([@project, @new_task]) do |f| %>
    <%= f.text_field :title, placeholder: 'Add a Task' %>
    <%= f.submit %>
 <% end %>

#TasksController
def show
  @projects = Project.all
  @project = Project.find(params[:project_id])
  @task = Task.find(params[:id])
  @new_task = Task.new(title: @task.title)
  @tasks = @project.tasks.all
end

问题是当我在执行任务/显示(调用任务 ID)时,表单假定它是更新并使用任务名称填充文本字段。

我需要清除文本字段,以便只有“添加任务”占位符可见。我尝试了许多不同的方法,但都没有成功,希望这里有人能提供帮助。

【问题讨论】:

  • 有谁知道清除这个文本字段值的方法,使用咖啡、js 或其他方式?

标签: ruby-on-rails forms


【解决方案1】:

所有 Rails 表单的行为都是这样的——它们使用存储在变量中的值预先填充字段。如果你刚刚完成@new_task = Task.new,那么所有的值都是nil,所以所有的字段都是空的。

如果你已经完成了@new_task = Task.new(:title =&gt; @task.title),那么title 属性有一个值@task.title),所以它将显示在表单中。

如果您不想显示任何内容,请不要预设值。

【讨论】:

  • 问题是我必须设置标题属性才能使表单正常运行(它需要始终发布而不是补丁)。也许我可以使用 JS 强制清除字段?
  • @interfab 那是......不是正确的方法。你是从哪里得到这个想法的?在form_for 标记中使用method 说明符,如以下问题:stackoverflow.com/q/9551330/3160466。您可以使用 JS 来强制清除该字段,但这是在 hack 之上的 hack,您确实应该使用“正确”的方式。
  • 我听从了这个问题的帮助:stackoverflow.com/questions/40413314/…。由于某种原因,将method: :post 添加到我的表单中不起作用,Rails 仍要编辑。
猜你喜欢
  • 1970-01-01
  • 2015-08-03
  • 2015-08-17
  • 2012-02-04
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
相关资源
最近更新 更多