Неопределенная локальная переменная или метод "plane" для # <#: 0x43d7720> (Ruby on Rails) - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь сделать объект редактирования в Ruby on Rails, используя модальную форму, когда я пытаюсь сделать link_to edit_plane_path (plane) в planes.html.erb Я получаю следующую ошибку:

неопределенная локальная переменная или метод "плоскость" для # <#: 0xd580e98> Вы имели в виду?@plane plane_url @ planes

Однако попытка любого из них на самом деле не меняет того факта, что я все еще получаю сообщение об ошибке на странице и даже не могу ее загрузить.

planes.html.erb

<table>
    <thead>
        <tr>
            <th>Image</th>
            <th>Operating agency</th>
            <th>Date</th>
            <th>Call sign</th>
            <th>Country</th>
            <th>Info</th>
            <th>Action</th>
      </tr>
<thead>
    <tbody>
        <% @planes.each do |p| %>
            <tr class="gradeC">
                <td>
                     <%= image_tag(p.image, size: "150x150")%></td>
                        <td class="w-25"><%= p.provider%>
                        </td>
                        <td><%= p.brand%></td>
                        <td class="center"><%= p.year%></td>
                        <td class="center"><%= p.call_sign%></td>
                        <td><%= p.country%></td>
                        <td><%= p.info%></td>
                        <td class="text-right">
                            <div class="btn-group">
                                <%= link_to 'Edit', edit_plane_path(plane), remote: true, :class =>'btn white btn btn-xs' %>
                                <button class="btn-white btn btn-xs">Delete</button>
                            </div>
                        </td>
                    </tr>

                    </tbody>
                    <% end %>
</table>

_form.html.erb

<!-- FORM EDIT -->
    <div id="edit-plane" class="modal fade" aria-hidden="true">
    <div class="modal-dialog modal-md">
    <div class="modal-content">
    <div class="modal-body">
    <div class="row">
    <div class="col-sm-12"><h3 class="m-t-none m-b">Edit plane</h3>
    </div>
    </div>
    <%= form_for @plane, url: planes_path, remote: true do |f| %>
    <div class="form-group row">
    <div class="col-sm-6">
    <label>Brand</label> 
        <%= f.text_field :brand, class:"form-control"%> 
    </div>
    <div class="col-sm-5">
    <label>Model</label> 
        <%= f.text_field :model, class:"form-control"%> 
    </div>
    </div>

    <div class="form-group row">
        <div class="col-sm-5">
        <label>Year</label>
            <%= select_tag :hyear, options_for_select(["2015","2016","2017","2018","2019"], "2019"), class:"select2_demo_1 form-control" %>
            <%= f.hidden_field :year %>
        </div>

        <div class="col-sm-6">
        <label>Country</label>
            <%= select_tag :hcountry, nil, class:"select2_demo_1 form-control" %>
                <%= f.hidden_field :country %>
            </div>

            <script language="javascript">
                populateCountries("hcountry");
            </script>
    </div>

    <div class="form-group row">
        <div class="col-sm-6">
            <label>Provider</label>
                <%= select_tag :hprovider, options_for_select([ "Test", "Test2"], "Test"), class:"select2_demo_1 form-control"%></select>
                <%= f.hidden_field :provider %>
        </div>


        <div class="col-sm-5">
        <label>Tactical call sign</label> 
            <%= f.text_field :call_sign, class:"form-control"%> 
        </div>
    </div>

    <div class="form-group row">
        <div class="col-sm-6">
        <label>Extra info</label> 
            <%= f.text_area :info %>
        </div>

        <div class="col-sm-5">
            <label>Image</label>       
            <%= f.file_field :image %>   
        </div>

    </div>

    <!-- SUBMIT -->
    <button class="btn btn-primary btn-lg float-right ml-2" id="cancelbtn">Cancel</button>
    <%= f.submit "Submit", id:"edpla", class: 'btn btn-primary btn-lg float-right'%>
    </div>
    <% end %>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>

edit.js.erb

// Add the dialog title
$('#edit-plane h3').html("<i class=' glyphicon glyphicon-pencil'></i> Edit Plane");

// Render the edit form
$('.modal-body').html('<%= j render("form") %>');

// Show the dynamic dialog
$('#edit-plane').modal("show");

// Set focus to the first element
$('#edit-plane').on('shown.bs.modal', function () {
      $('.first_input').focus()
  })

update.js.erb

$('#edit-plane').modal('toggle');
$('#customer_<%= @plane.id %>').replaceWith('<%= j render (@plane) %>')

planes_controller.rb

class PlanesController < ApplicationController
    def planes 
        @plane = Plane.new
        @planes = Plane.all
    end

    def create
        @plane = Plane.new(plane_params)
        if @plane.save
          flash[:success] = "Plane successfully added"
          redirect_to :planes => 'post', :action => 'planes'
        else
          flash[:error] = "Something went wrong"
          render 'planes'
        end
    end

    def edit
      @plane = Plane.find(params[:id])
    end

    def update
      respond_to do |format|
        if @plane.update(plane_params)
          format.json { head :no_content }
          format.js
        else
          format.json { render json: @customer.errors.full_messages, status: :unprocessable_entity }
        end
      end
    end

    private
    def plane_params
        params.require(:plane).permit(:brand, :model, :provider, :call_sign, :user, :country, :image, :info, :year)
    end

end


Моя цель состоит в том, чтобыотредактируйте плоскость в таблице через модальную форму, но я даже не могу показать страницу в данный момент.

1 Ответ

0 голосов
/ 19 сентября 2019

Здесь:

<% @planes.each do |p| %>

... вы передаете каждый plane как p.Поэтому попробуйте:

<%= link_to 'Edit', edit_plane_path(p), remote: true, class: 'btn white btn btn-xs' %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...