2013-01-24 79 views
0

我是新來的Rails,並已學習對我自己。這也是我在Stackoverflow上發佈的第一次,儘管我很多地提到它。下面是真實顯示一個模式叫想法記錄的ERB代碼的片段:編輯記錄顯示爲紅寶石錶行on Rails的(3.1.0)

<% @idea.each do |i| %> 
    <tr> 
    <td><%= i.name %></td> 
    <td><%= i.description %></td> 
    <td><a class="btn" href="share"><i class="icon-share"></i></a></td> 
    <td> 
     <%= link_to(ideas_edit_path(@i), :class => 'btn') do %> 
      <i class="icon icon-edit"> </i> 
     <% end %> 
    </td> 
    <td><a class="btn" href="destroy"><i class="icon-trash"></i></a></td> 
    </tr> 
<% end %> 

每一行都包含「姓名」,「說明」,然後圖標稱爲「共享」,「編輯」,「消滅」 。我想爲這個特定記錄的這些動作顯示一個表單。我不知道如何將記錄的ID傳遞給這些操作。有人可以指點我正確的方向嗎?我想我已經定義正確的路線,因爲我可以在輸入完整的ERL(/創意/ 2 /編輯)和它帶來了編輯表單。

回答

0

您@idea更改爲@ideas以反映它是一個集合。

,你遍歷應該像

@ideas.each do |idea| 
    link_to(edit_idea_path(idea), :class => 'btn') 
end 

所以你的鏈接現在是edit_idea_path(idea)

文件的形式將是app/view/ideas稱爲集合edit.html.erb
其實形式是由共享新和編輯的操作,因此最好的辦法是有_form.html.erb幷包括兩個新的編輯形式。在.erb模板

代碼就會像

form_for @idea do |f| 
    various input fields 
end 

我建議你趕快嘗試使用在軌可用的腳手架來創建一個應用。然後再看看被生成的內容,你會被什麼東西應該被命名,在那裏他們更好地瞭解等
這可能聽起來有點激烈,但實際上它是那樣簡單:

$ cd ~   # Go to root 
$ mkdir newapp # Create a new directory 
$ cd newapp  # Create a new rails app 
$ rails generate scaffold Idea name:string description:text # Use scaffolding 
0

當你使用的是命名路線(即ideas_edit_path),你可以傳入一個模型對象作爲參數,然後他們將爲該對象建立正確的路線。有沒有在你的代碼上面你指的是@i在當它應該是i(在它上面的循環中聲明的局部變量)的錯誤。

另一個小挑剔:你可能想使用@ideas而非@idea的收集,以表明它是一個集合,但是這並不一定是錯誤本身。

+0

感謝吉姆。我現在正確地得到了id。我會解決你所建議的多元化慣例。 –

0

您可以使用link_to幫手do構建一個塊。

<%= link_to edit_idea_path(i), class: "btn" do %> 
    <i class="icon icon-edit"></i> 
<% end %> 

看起來像使用Bootstrap框架與Rails - 非常好的組合!