2017-03-05 51 views
1

我正在關注Ruby on Rails的Lynda.com教程。在遵循它的時候,當被要求做一個表單時,我使用普通的HTML代碼而不是使用form_for方法。所以我的表單現在看起來像下面我已經使用參數數組來傳遞值。由於這是我的edit.html.erb文件,我還聲明瞭一個值字段,我將顯示以前的數據值。在Ruby on Rails的視圖中顯示以前從數據庫添加的值

現在,例如,我的名字等於「我的長名」。在編輯視圖中只顯示「我的」部分。即只顯示主題名稱的第一部分。

注意:我還有一個'顯示'視圖,其中列出了特定主題的詳細信息。有全名(「我的長名字」)正確顯示。

那麼爲什麼我不能在這裏工作?

<!DOCTYPE html> 
<html> 
<head></head> 
<body> 

    <%= csrf_meta_tags %> 
    <div class="subjects index"> 
    <h2>Update Subject</h2> 
    <form action="/subjects/<%= @subject.id %>" method="post"> 
     <input type="hidden" name="_method" value="patch" /> 
     <div class="row"> 
     <div class="input-field col s12 l5"> 
      <input id="name" name="subject[name]" value= <%= @subject.name %> type="text" class="validate" > 
      <label for="name" data-error="wrong" data-success="right">Name</label> 
     </div> 
     </div> 
     <div class="row"> 
     <input type="submit" value="Update Subject" /> 
     </div> 

     <%= link_to("Back",'/subjects',:class => 'action index') %> 
    </form> 
    </div> 

</body> 
</html> 

回答

1

看來你缺少名稱輸入的value參數後面的引號。

沒有他們,你得到的HTML:<input id="name" name="subject[name]" value=My long name type="text" class="validate" >

所以longname變得屬性他們自己以及(它們是有效的定製有效的屬性在HTML5)。

它應該是這樣的: <input id="name" name="subject[name]" value="<%= @subject.name %>" type="text" class="validate" >

但請使用內置的forminput助手,被認爲是最佳做法。他們以較少的努力生成所有必要的HTML。

+0

謝謝!添加引號解決了這個問題。 – TargetBlank

0

爲什麼不能使用Rails'es內置的form_for輔助方法? Rails用於使用ruby生成HTML動態,而不是創建HTML手冊。 你會然後只是有:

<%= render 'form', subject: @subject %> 

這將解決您的問題將自動

+0

雖然它沒有回答這個問題,但你說得對,通過不使用Rails的助手是一種反模式。 – Vlad

+0

我正在使用物化作爲前端。當我嘗試設計窗體風格時,它並沒有像我想的那樣結束。但是,我只是試圖將這兩者結合在一起,因爲我沒有太多的知識來有效地使用RoR。 所以,我會再說一遍,因爲我也明白內置方法是前進的方式。非常感謝! – TargetBlank

1

<input id="name" name="subject[name]" value="<%= @subject.name %>" type="text" class="validate" >

或者換句話說,輸入的「價值」應該用引號括起來。

+0

非常感謝!它的工作:D – TargetBlank