2014-12-01 11 views
0

Я как бы новый в Rails, и у меня проблемы с маршрутами. Когда я пытаюсь удалить элемент управления, появляется сообщение об ошибке «Нет маршрута соответствует [УДАЛИТЬ]» /months.5. И я не знаю, почему. Я покажу вам свой код.Нет совпадений в маршруте [Удалить] "/months.5"

Ruotes.rb

Rails.application.routes.draw do 

     root 'staticpages#index' 

     devise_for :users # :path => '', 

    # path_names: {sign_in: 'login', sign_up: 'registro'}, 
    # controllers: {sessiones: 'users/controls'} 

     get '/controls/calendar' => 'controls#event' 

     get 'graphicscontrols' => 'graphics#graphics_evolution' 

     get 'months' => 'controls#months' 

     # resources :users, only: [:show] do #:path => '' 
     resources :controls # :path => '' 
     resources :graphics, only: [:index] 


     resources :meals, only: [:index, :new, :create] 

управления Контроллер

класс ControlsController < ApplicationController

before_action :authenticate_user! 

def index 



    @user= current_user 
    @control= Control.new 

    @control_last= @user.controls.last 

    @controls= @user.controls.order_by_date 

    @controls_average = Control.controls_average (current_user.id) 

    @controls_average_day = Control.controls_day_average (current_user.id) 
    # @controls = Control.order_by_date 
end 

def event 
    @user= current_user 
    @[email protected] 
    render json: @controls if request.xhr? 
end 

def months 
    @user= current_user 
    @controls= @user.controls.order_by_date 
end 

def create 
    @user = current_user 
    control_params2 ={} 
    control_params2[:level] = control_params[:level] 
    control_params2[:period] = control_params[:period] 
    control_params2[:day]=DateTime.strptime(control_params[:day],'%m/%d/%Y %I:%M %p') 
    @control= @user.controls.build(control_params2) 
    @control.save! 
    flash[:notice] = "Congratulations, your control has been created" 
    redirect_to controls_path 
rescue ActiveRecord::RecordInvalid 
    render 'index' 
end 


def edit 
    @control = Control.find(params[:id]) 

end 


def update 
    @user = current_user 
    @control = Control.find(params[:id]) 
    if @control.update_attributes(control_params) 
     flash[:notice] = "Congratulations, your control has been updated" 
     redirect_to controls_path(current_user) 
    else 
     @errors = @control.errors.full_messages 
     render 'edit' 
    end 
end 

def delete 
    @control= Control.find(params[:id]) 

end 

def destroy 
    @control= Control.find(params[:id]) 
    if @control.delete 
     flash[:notice] = "Congratulations, your control has been removed" 
     redirect_to months_path 
    end 
end 
private 
def control_params 
    params.require(:control).permit(:level, :period, :day) 
end 

конец

просмотров/контроль/moonths.html.erb

<h1>Controls</h1> 

<ul> 
    <% @controls.each do |control| %> 
    <li><%= "Blood Sugar Control:" + control.level.to_s + " - " + control.period + " - " +  control.day.to_s %></li> 
    <%= link_to "Delete", months_path(control), method:'delete', data: {confirm: "Are you sure?"} %> 
    <%= link_to "edit", edit_control_path(control)%> 
</ul> 
<% end %> 

ответ

0

Вы можете проверить rake routes один раз, вы поймете больше на маршрутах

Теперь вы можете сделать, это

<%= link_to "Delete", control, method:'delete', data: {confirm: "Are you sure?"} %> 

или же

<%= link_to "Delete", control_path(control.id), method:'delete', data: {confirm: "Are you sure?"} %> 

Вы удаляете управления использовать объект control_path (..), или для месяца использования объекта month_path (..)

+0

Хорошо, если я ставлю control_path (Control.ID) он работает, но то, что я хочу, что, когда я нажимаю на удаление перенаправляет меня month_path. Но если я пишу month_path (control.id), он говорит: «Нет маршрутов» [DELETE] »/controls.20» –

+0

do 'month_path (id: control.id)' – Nithin

-1

По вашему мнению, вы должны поставить этот

<h1>Controls</h1> 

<ul> 
    <% @controls.each do |control| %> 
    <li><%= "Blood Sugar Control:" + control.level.to_s + " - " + control.period + " - " +  control.day.to_s %></li> 
    <%= link_to "Delete", controls_path(control), method:'delete', data: {confirm: "Are you sure?"} %> 
    <%= link_to "edit", edit_control_path(control)%> 
</ul> 
<% end %> 
Смежные вопросы