2012-05-15 39 views
2

我覺得這應該真的很簡單,但我完全卡住了!Rails 3.1 - 在Edit上顯示錶單值?

在一個形式,我可能有這樣一個領域:

<%= f.text_field :name, :class => "text" %> 

上編輯,這種拉回在提交了關於創造的價值,這很好。但是我想阻止某些字段被編輯。我知道我可以禁用該字段或將其隱藏,但我希望能夠以其他方式顯示和使用這些值。我如何訪問它們?

在這種情況下,我已經試過了諸如:

<%= f.track.name %> 

<%= track.name %> 

<%= @track.name %> 

但沒有上述工作的!

任何想法的人?

編輯:(我使用這個嵌套表格)

<%= form_for(@release, :html => { :multipart => true }) do |f| %> 
    <h3>Upload Tracks for <%= @release.title %></h3> 

    <%= f.fields_for :tracks do |builder| %> 
    <%= render 'upload_track_fields', :f => builder %> 
    <% end %> 

<%= f.submit "Upload Tracks", :class => "submit" %>  
<% end %> 

而被渲染的upload_track_fields:

<%= f.text_field :position, :class => "text" %> 
<%= f.text_field :name, :class => "text" %> 
<%= f.text_field :isrc, :class => "text" %> 
<%= f.text_field :version, :class => "text" %> 
<%= f.file_field :track, :class => "text" %> 
<%= f.hidden_field :primary_genre_id %> 
<%= f.hidden_field :secondary_genre_id %> 
<%= f.hidden_field :alt_primary_genre %> 
<%= f.hidden_field :alt_secondary_genre %> 
<%= f.hidden_field :asset_tier %> 
<%= f.hidden_field :preview_start %> 
<%= f.hidden_field :parental_advisory %> 
<%= f.hidden_field :available_separately %> 
<%= f.hidden_field :_destroy %> 

我已經隱藏大多數字段,以防止編輯,但仍然需要查看一些字段,以便將它們保留爲文本字段。我試圖禁用它們,但是停止了任何更改(特別是文件上載)。

總之,我寧願顯示大部分上述文本而不是表單域。

+0

如何模型被傳遞到視圖?你的控制器是否設置了「@ track」? –

+0

曲目是一個版本的嵌套屬性,所以它似乎沒有任何東西在控制器傳遞給視圖.....但是表單如何設法拉入值 – Raoot

+1

您能否將您的控制器的相關部分粘貼到問題中? –

回答

1

在主要形式有:

<% index = 0 %> 
<% f.fields_for :tracks do |builder| %> 
    <%= @release.tracks[index].name %> 
    <%= render 'upload_track_fields', :f => builder %> 
    <% index += 1 %> 
<% end %> 

在嵌套形式:

<%= f.text_field :position, :class => "text" %> 
# Notice that there's no "name" attribute 
<%= f.text_field :isrc,  :class => "text" %> 
<%= f.text_field :version, :class => "text" %> 
<%= f.file_field :track, :class => "text" %> 

我在第一個片段沒有什麼是髒,但我從來沒有使用過fields_for,所以我不知道如何得到實際的指數。我看了Google,但到目前爲止我還沒有找到解決方案。

我現在不能嘗試,我會在我回家時做。
我建議在找到獲取索引的方法時使用它。

祝你好運!

+0

謝謝,問題是,我試圖顯示值的嵌套形式的一部分.....如果我添加一個do循環,就像我通常放入一個索引或顯示結果是雙循環一樣... – Raoot

+0

呃...你可能已經提到你使用嵌套窗體。請向我們展示更多代碼。 –

+0

哎呀,對不起,我剛剛在上面添加了更多代碼.... – Raoot

1

正如那些評論說的那樣,我認爲<%= @track.name %>應該工作,如果你在控制器的編輯方法中有@track = @release.track(例如)。

0

而是讓你可以通過建設者訪問相關的對象索引的賽道,它實際上是一個軌道

<% f.fields_for :tracks do |builder| %> 
    <%= builder.object.name %> 
    <%= render 'upload_track_fields', :f => builder %> 
<% end %>