Добавление маршрута в контроллер Rails 3 - PullRequest
3 голосов
/ 02 марта 2011

Я все еще изучаю Rails, и я столкнулся с проблемой, которая, на мой взгляд, должна быть довольно простой. Надеясь, что кто-то может показать мне ошибку моих путей.

Я прочитал этот пост: Как добавить пользовательский маршрут RESTful в приложение Rails? , в котором содержится масса полезной информации (для Rails 2 я использую Rails 3), но я не могу заставить мой код работать. Вот где я нахожусь:

Я добавил свой route.rb следующим образом:

  resources :proposals do
    member do
      put :change_status
    end
  end

Я добавил в свои предложения_контроллер.рб следующим образом:

  def change_status
    @proposal = Proposal.find(params[:id])

    respond_to do |format|
      if @proposal.change_status
        format.html { redirect_to(@proposal, :notice => 'Proposal status was changed.'') }
        format.xml  { head :ok }
      else
        format.html { redirect_to(@proposal, :error => 'Proposal failed to transition.') }
        format.xml  { render :xml => @proposal.errors, :status => :unprocessable_entity }
      end
    end
  end

И, наконец, на мой взгляд, я обращаюсь к нему следующим образом:

<%= link_to "Deliver to Client", change_status_proposal_path(@proposal) %>

Но когда я захожу на свой сайт, зайдя на

http://localhost:3000/proposals/4/change_status

Я получаю следующую ошибку:

Ошибка маршрутизации

Нет совпадений маршрутов "/ offer / 4 / change_status"

Я предполагаю, что я делаю здесь что-то глупое, потому что это должно быть действительно просто, но я просто не могу пройти мимо. Я прошу прощения за то, что задал такой простой вопрос, но если у кого-то есть какой-либо совет, это будет огромной помощью.

Заранее спасибо!

1 Ответ

2 голосов
/ 02 марта 2011

Это потому, что вы использовали put в качестве глагола в маршруте. Так что ссылка должна выглядеть так:

<%= link_to "Deliver to Client", change_status_proposal_path(@proposal), :method=>:put %>

Вы не сможете получить доступ к этому маршруту, просто поместив URL-адрес в браузер, потому что запрос должен быть отправлен. Помещение URL в браузер считается как GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...