0

トランスポーターを追加するフォームを作成しようとしています: テンプレートを呼び出す app/views/transporters/new.html.erb があります。次のような app/views/_form.html.erb です。

<%= form_for(@transporter) do |f| %>
  <% if @transporter.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@transporter.errors.count, "error") %> prohibited this transporter from being saved:</h2>

      <ul>
      <% @transporter.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :phone %><br>
    <%= f.text_field :phone %>
  </div>
  <div class="field">
    <%= f.label :id_number %><br>
    <%= f.text_field :id_number %>
  </div>
  <div class="actions">
    <%= f.submit 'Add transporter', class: 'btn btn-success' %>
  </div>
<% end %>
<%= link_to 'Back to all transporters', transporters_path, class: "btn" %>
</div>
</div>

これは、トランスポーター コントローラーの作成アクションです。

  def create
    @transporter = Transporter.new(transporter_params)
  end

private 
def transporter_params
      params.require(:transporter).permit(:name, :phone, :id_number)
    end

[Add transporter] をクリックしても、フォームがどこにも移動しません。何が間違っていますか?

更新:これは私のルートファイルです:

Cowsnhills::Application.routes.draw do
  resources :transporters

  resources :deliveries

  root 'welcome#index'
end

送信をクリックすると、フォームがリロードされますが、エントリがトランスポーター インデックスに表示されません。そのコードは次のとおりです。トランスポーター コントローラー メソッド:

  def index
    @transporters = Transporter.all
  end

およびトランスポーターのインデックス:

<h1>Listing transporters</h1>

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Phone</th>
      <th>Id</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>

  <tbody>
    <% @transporters.each do |transporter| %>
      <tr>
        <td><%= transporter.name %></td>
        <td><%= transporter.phone %></td>
        <td><%= transporter.id %></td>
        <td><%= f.link_to_add "Add a delivery", :deliveries %></td>
        <td><%= link_to 'Show transporter details', transporter %></td>
        <td><%= link_to 'Edit transporter details', edit_transporter_path(transporter) %></td>
        <td><%= link_to 'Delete transporter', transporter, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Transporter', new_transporter_path, class: "btn" %>

また、トランスポーター has_many deliverys とvelivery belongs_to transporter アソシエーションが進行中です。

4

2 に答える 2

1

使用する

 @transporter = Transporter.new(params[:transporter])

また

@transporter = Transporter.new(params["transporter"])

最後のコメントを確認して保存してください。

于 2013-09-14T16:21:25.930 に答える