Rails: ArgumentError в MethodTypes # edit - PullRequest
       1

Rails: ArgumentError в MethodTypes # edit

0 голосов
/ 04 апреля 2019

Я пытался сделать правку для ruby ​​на рельсах, но он показывает ошибку аргумента о правке.Я запутался в этом вопросе.

Затем я попытался вставить другой аргумент в index.html.erb. Однако он все равно не работает.Например m.id и m

Это index.html.erb

<% @methodtypes.each do|m| %>
   <tr>
      <td><%=m.name %></td>
      <td><%=m.desp %></td>
   </tr>
   <%= link_to "Edit", edit_method_types_path(m.id) %>
<% end %>
<%= link_to "Create Method", new_method_types_path %>

Это мой файл контроллера:

class MethodTypesController < ApplicationController
    def index
      @methodtypes = MethodType.all
    end

    def show
      @methodtype = MethodType.find_by_id(params[:id])
    end   

    def create
      @methodtype = MethodType.new(method_params)
      @methodtype.save
      if @methodtype.save
        redirect_to  method_types_path
      else
        render :new
      end
    end

    def edit
        @methodtype = MethodType.find_by_id(params[:id])
    end

    def new
        @methodtype = MethodType.new
    end 

private

    def method_params
      params.require(:method_type).permit(:name, :desp)
    end

Это моя правкастраница, которая является edit.html.erb:

<%= form_for @methodtype do |f| %>
  <div>
    <%= f.label :name %>
    <%= f.text_area :name %>
  </div>
  <div>
    <%= f.label :desp %>
    <%= f.text_field :desp %>
  </div>
  <%= f.submit %>
<% end %>

Результат должен показать, что я могу редактировать свой текст.но он показывает ArgumentError в MethodTypes # edit.Может ли кто-нибудь дать мне какое-то предложение, я не знаю, как это исправить .....

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Неправильный путь редактирования URL

Это должно быть <% = link_to "Редактировать", edit_method_type_path (m.id)%> вместо <% = link_to "Редактировать", edit_method_types_path (m.id)%>

Также проверьте файл маршрутов. Кажется, вы определяете

 resource: method_types 

Изменить на

 resources: method_types
0 голосов
/ 04 апреля 2019

<%= link_to "Edit", edit_method_types_path(m.id) %> должно быть <%= link_to "Edit", edit_method_type_path(m) %>, обратите внимание, что type в единственном числе.

Выполните rails routes -g method_type, чтобы подтвердить его.

Также измените MethodType.find_by_id(params[:id]) до MethodType.find(params[:id]) в контроллере.

Кстати, вы дважды вызываете save в вашем create методе:

def create
  @methodtype = MethodType.new(method_params)
  @methodtype.save # delete this line
  if @methodtype.save
    redirect_to  method_types_path
  else
    render :new
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...