开发者

Cannot get added Method and link_to to work (Rail 3)

Seen some references, but its old Rails 2 solutions. Having a hard enough time understanding some of the Rails 3 nomenc开发者_运维百科lature.

I added a method 'dndl' in my controller. I added a link_to in my index. I TRIED and TRIED again to put routes in.

Controller:
def dnld
  blah blah
end

Index:

<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 %>

Routes:

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

I've tried:

    <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.

Thanks for the help!


If you are giving collection in your routes.rb like:

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

then the named path will be 'dnld_stocks_path'. And you don't need to specify the action.

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

If you are giving member in your routes.rb like:

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

then the named path will be 'dnld_stock_path(stock)'.

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

For more info visit


Try

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

then

<%= link_to "Dnld", dnld_controllername_path %>

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜