Невозможно получить добавленный метод и link_to для работы (Rail 3) - PullRequest
1 голос
/ 03 апреля 2011

Видел несколько ссылок, но это старые решения Rails 2.Мне было довольно трудно разобраться в некоторых номенклатурах Rails 3.

Я добавил метод 'dndl' в свой контроллер.Я добавил link_to в свой индекс.Я ПОПРОБОВАЛ и ПОПЫТАЛ снова, чтобы добавить маршруты.

Controller:
def dnld
  blah blah
end

Индекс:

<td><%= link_to 'Show', stock %></td>
<td><%= link_to 'Edit', edit_stock_path(stock) %></td>
<td><%= link_to 'Dnld', dnld, {:action => 'dnld'} %></td>
<td><%= link_to 'Destroy', stock, :confirm => 'Are you sure?', :method => :delete %>

Маршруты:

  resources :stocks do
    collection do
        put 'dnld'
    end
  end

Я пробовал:

    <td><%= link_to 'Dnld', stock, {:action => 'dnld'} %></td>
# End up on the stock show page with dnld not executed to my knowledge

    <td><%= link_to 'Dnld', , {:action => 'dnld'} %></td>
# Produces an error

    <td><%= link_to 'Dnld', dnld_stock_path(stock), {:action => 'dnld'} %></td>
# It doesn't know what dnld_stock_path is, yet I don't understand why it DOES know what edit_stock_path is and cannot find documentation to explain this.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Если вы предоставляете коллекцию в вашем rout.rb, например:

  resources :stocks do
    collection do
        put 'dnld'
    end
  end

, тогда именованный путь будет 'dnld_stocks_path'.И вам не нужно указывать действие.

<td><%= link_to 'Dnld', dnld_stocks_path %></td>

Если вы предоставляете member в вашем rout.rb, например:

  resources :stocks do
    member do
        put 'dnld'
    end
  end

, тогда указанный путь будет 'dnld_stock_path (сток) '.

<td><%= link_to 'Dnld', dnld_stock_path(stock) %></td>

Для получения дополнительной информации посещение

1 голос
/ 03 апреля 2011

Попробуйте

 resources :stocks do
    collection do
        put :dnld, :as => dnld
    end
  end

, затем

<%= link_to "Dnld", dnld_controllername_path %>

...