2010-11-19 37 views
2

好了,所以我很新的軌道和我試圖做沒有成功如下:含項目Rails的表單域的局部視圖,設定值

我有一個對象(從我的活動記錄),其中包含n個子項目,其中包含n個任務。現在對於每一個我想要一個局部視圖。

所以我從項目渲染視圖子項目用下面的代碼:

<%= render(:partial => 'subproject', :collection => @project.sub_projects) %> 

在我的子項目局部視圖稱爲_subproject.rhtml(添加代碼到一個良好的醇的Rails 1.2.3項目),這樣我就可以訪問這些數據是這樣的:

<%= subproject.name %> 

,將打印出來的名字好嗎但當我嘗試生成一個文本框,這將不起作用:

<%= text_field 'subproject', 'name' %> 

但這種意願:

<%= text_field 'subproject', 'name', :value => subproject.name %> 

我在做什麼錯?


編輯:由於我的問題,更改標題沒有傳遞值,而是在表單字段中顯示它。


EDIT2:根據要求我的控制器代碼:

@project = Project.find(params[:id]) 

回答

3

你可以這樣寫:

<%= render(:partial => 'subproject', :collection => @project.sub_projects) %> 

<%= render :partial => @project.sub_projects %> 

,這會使得與每一個子項目sub_projects/_sub_project.html.erb部分。一個小捷徑。

此:

<%= text_field 'subproject', 'name' %> 

說創建一個名爲text_field:子項目[名],但並沒有給它的值。你需要傳遞你想要設置的值(工作的代碼)。

現在這樣做的更地道的方法是使用的form_for:

<% form_for @subproject do |f| %> 
    <%= f.text_field :name %> 
<% end %> 

或者,如果你使用formtastic(https://github.com/justinfrench/formtastic),這是夢幻般的,你」 d寫:

<% semantic_form_for @subproject do |f| %> 
    <%= f.input :name %> 
<% end %> 

我希望這有助於!

+0

感謝您的建議我實現了更好的form_for代碼的東西是,雖然值仍然沒有設置。當我在上面的部分視圖中使用代碼(生成項目html代碼的代碼)時,值被設置。你知道爲什麼會發生嗎? – Mark 2010-11-19 16:37:42

+0

發佈您的控制器代碼和您的視圖代碼。 – jonnii 2010-11-19 17:01:27

+0

我的視圖代碼我已經發布,在我的控制器中,據我的Ruby知識告訴我一個成員變量用於保存該值,然後在視圖中使用。但是,當我嘗試在視圖中渲染部分內容時,我的'子部分'似乎沒有像文檔中描述的那樣渲染。我使用的是Rails的v1.2.3(加上我對Ruby(on Rails)很新穎)。 – Mark 2010-11-22 08:05:07