Rails: redirect_to: controller => 'tips',: action => 'show',: id => @ tip.permalink - PullRequest
19 голосов
/ 12 июня 2010

Я пытался перенаправить рельсы, чтобы показать действие, передавая контроллер, действие и параметры.Тем не менее, рельсы полностью игнорируют имя действия!

я получил http://mysite/controllername/paramId

, поэтому у меня появляется сообщение об ошибке ....

вот код действия Iиспользуется:

def update
    @tip = current_user.tips.find(params[:id])
    @tip.attributes = params[:tip]
    @tip.category_ids = params[:categories]
    @tip.tag_with(params[:tags]) if params[:tags]


    if @tip.save
      flash[:notice] = 'Tip was successfully updated.'
      redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink
    else
      render :action => 'edit'
    end
  end 

Ответы [ 3 ]

35 голосов
/ 12 июня 2010

Зачем бороться с рамками?

redirect_to @tip

И вы можете сократить свой код, используя опцию: alert.

redirect_to @tip, :notice => 'Message here'
7 голосов
/ 12 июня 2010

Если это маршрут ресурса REST, маршрутизация на самом деле правильная. Запрос GET на /tips/id фактически вызывает действие show. Из-за способа маршрутизации, я предполагаю, что вы маршрутизировали его с map.resources, и это правильно.

0 голосов
/ 12 июня 2010

Это может быть временным "обходом". Используя рендер, он работает очень хорошо ....

if @tip.save
  flash[:notice] = 'Tip was successfully updated.'
   render :action => 'show', :id => @tip.permalink
 # redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink
else
  render :action => 'edit'
end
...