Направляющие: redirect_to: контроллер =>'tips': действие => 'шоу': идентификатор => @tip.permalink

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

то, что я получил, является http://mysite/controllername/paramId

таким образом, у меня есть сообщение об ошибке....

вот код действия, который я использовал:

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 

19
задан john 11 June 2010 в 21:35
поделиться

3 ответа

Это могло быть временным «обходом». При рендеринге он работает очень хорошо ....

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
-3
ответ дан 30 November 2019 в 03:24
поделиться

Зачем бороться с фреймворком?

redirect_to @tip

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

redirect_to @tip, :notice => 'Message here'
35
ответ дан 30 November 2019 в 03:24
поделиться

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

7
ответ дан 30 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: