0

私はRailsを初めて使用し、自分でそれを学んでいます。よく参照しますが、Stackoverflowに投稿するのもこれが初めてです。以下は、Ideasと呼ばれるモデルのレコードを表示しているERBコードのスニペットです。

<% @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(/ idea / 2 / edit)を入力すると、編集フォームが表示されるため、ルートが正しく定義されていると思います。

4

3 に答える 3

0

link_toヘルパーを a と共に使用してdo、ブロックを構築できます。

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

RailsでBootstrapフレームワークを使用しているように見えます-非常に素晴らしい組み合わせです!

于 2013-01-24T20:21:22.297 に答える
0

名前付きルート (つまりideas_edit_path) を使用している場合、モデル オブジェクトを引数として渡すだけで、そのオブジェクトの正しいルートが構築されます。@i上記のコードには、本来あるべきタイミングを参照している場所i(上記のループで宣言されたローカル変数) にバグがあります。

もう 1 つのマイナーな問題:コレクションがコレクションであることを示すために、コレクションでは@ideasなくを使用することをお勧めしますが、それ自体は必ずしもバグではありません。@idea

于 2013-01-24T20:07:41.000 に答える
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
実際には、フォームは new および edit アクションによって共有されるため、_form.html.erb新しいフォームと edit フォームの両方にそれを含めて含めることをお勧めします。

.erb テンプレートのコードは次のようになります

form_for @idea do |f|
  various input fields
end

Rails で利用可能な scaffolding を使用して、すぐに別のアプリを作成することをお勧めします。次に、生成されるものを確認すると、名前を付ける必要があるもの、それらがどこにあるのかなどについてよりよく知ることができます。
これは少し劇的に聞こえるかもしれませんが、実際には次のように簡単です:

$ 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
于 2013-01-24T20:05:00.737 に答える