2012-08-09 114 views
1

HTML片段:水豚FILL_IN不起作用

<table id="project_1"> 
    <thead> 
    ... 
    <tr> 
     <form accept-charset="UTF-8" action="/projects/1/tasks" class="add-task form-search" 
     data-remote="true" id="new_task" method="post"></form> 
     <th><input class="input-xlarge" id="task_content" name="task[content]" 
     placeholder="Start typing here to create a task..." size="50" type="text"></th> 
     <th><input class="btn" name="commit" type="submit" value="Add Task"></th> 
    </tr> 
    </thead> 
    ... 
</table> 

RSpec的測試與水豚:

it "should create a task", :js => true do 
    visit projects_path 
    within("#project_#{@project.id}") do 
    fill_in "task[content]", :with => "This is a new task" 
    save_and_open_page 
    click_button 'Add Task' 
    end 
    page.should have_content("This is a new task") 
end 

水豚順利地找到網頁上的所有元素,但在頁面(由save_an_open_page產生)「任務[內容]」字段爲空。

這裏有什麼問題?由於

UPDATE:

從這個ERB生成的HTML代碼:

... 
<%= form_for [project, Task.new], html: { :class => "add-task form-search" }, remote: true do |f| %> 
    <th><%= f.text_field :content, :class => "input-xlarge", :placeholder => "Start typing here to create a task...", :size => 50 %></th> 
    <th><%= f.submit "Add Task", :class => "btn" %></th> 
<% end %> 
... 

回答

1

UPDATE:

封閉標籤(由@Steve注意到)可能確實是你的問題。這裏有人有同樣的問題:form_for closes <form> tag

我懷疑問題可能是你的HTML標籤的形式。如果你刪除錶行/頭標記,像這樣:

<%= form_for [project, Task.new], html: { :class => "add-task form-search" }, remote: true do |f| %> 
    <%= f.text_field :content, :class => "input-xlarge", :placeholder => "Start typing here to create a task...", :size => 50 %> 
    <%= f.submit "Add Task", :class => "btn" %> 
<% end %> 

看看是否能首先產生正確的HTML(與<form>標籤包裹<input>標籤,然後看看是否是規範通

原來的答案:

我懷疑,這個問題是不是與fill_in,但之後它(添加任務)。在我自己的測試,我發現save_and_open_page不顯示在實際的字段中的文本會發生什麼。即使測試確實有效,你確定有n在提交表單後將新任務添加到頁面時出現問題?

其他的事情嘗試:

  1. 取出within塊,看看它是否工作。
  2. 嘗試使用字段的id而不是namefill_in,即:fill_in "task_content", :with => "This is a new task"'並查看是否有效。
1

我看不出測試代碼和水豚電話有什麼問題。

在您的標記中,雖然看起來像您的input元素都在form之外,我期望包含它們。是否應該?:

<form accept-charset="UTF-8" action="/projects/1/tasks" class="add-task form-search" 
    data-remote="true" id="new_task" method="post"> 
    <th><input class="input-xlarge" id="task_content" name="task[content]" 
    placeholder="Start typing here to create a task..." size="50" type="text"></th> 
    <th><input class="btn" name="commit" type="submit" value="Add Task"></th> 
</form> 

(我不知道,一個tr嵌套在一個form元素是嚴格的法律HTML,但這樣也許你需要考慮替代使用表格)。

我通常發現save_and_open_page相當可靠的默認Rack驅動程序,但你在這裏運行JavaScript,所以我猜你正在運行硒或無頭webkit驅動程序。

+0

從ERB生成的HTML代碼,看看更新 – megas 2012-08-09 23:37:58

+0

行,所以你已經包裝的形式包裝輸入的元素,所以看起來並不像這就是問題所在。 – Steve 2012-08-10 06:43:20