2016-11-04 60 views
1

我有一個簡單的創建任務的形式,它是用@new_task定製的,以便始終創建任務。一個單獨的表單用於更新它們。Rails:如何清除編輯表單?

#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)的形式假定它是一個更新,並與任務名稱填充文本字段。

我需要清除文本字段,以便只顯示「添加任務」佔位符。我嘗試了許多不同的方式,但沒有運氣,希望有人能幫助。

+0

有誰知道一種方法來清除這個文本字段的價值,使用咖啡,JS或其他? – interfab

回答

2

所有的Rails表單行爲都像這樣 - 它們預先使用存儲在變量中的值填充字段。如果你剛剛完成@new_task = Task.new,那麼所有的值都是nil,所以所有的字段都是空的。

如果像你的情況,你所做的@new_task = Task.new(:title => @task.title),那麼title屬性有一個值(的@task.title),這樣,會在形式顯示。

如果您不想顯示任何內容,只需不要預先設置值。

+0

問題是我必須設置title屬性才能使表單正常工作(它需要始終POST而不是PATCH)。也許我可以強制使用JS清理該字段? – interfab

+0

@interfab這是...不正確的做法。你從哪裏得到這個想法?在'form_for'標籤中使用'方法'說明符,就像這個問題一樣:http://stackoverflow.com/q/9551330/3160466。你*可以*使用JS強制清除字段,但這是一個黑客攻擊,你真的應該使用「正確」的方式來代替。 – ArtOfCode

+0

我跟着這個問題的幫助:http://stackoverflow.com/questions/40413314/rails-how-to-force-a-form-to-post-rather-than-patch。將'method::post'添加到我的表單不起作用,Rails仍然想要編輯。 – interfab