Я пытался перенаправить направляющие для показа действия передающим контроллером, действия и параметрических усилителей. Однако направляющие игнорируют название действия полностью!
то, что я получил, является 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
Это могло быть временным «обходом». При рендеринге он работает очень хорошо ....
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
Зачем бороться с фреймворком?
redirect_to @tip
И вы можете сократить свой код, используя опцию: notice.
redirect_to @tip, :notice => 'Message here'
Если это маршрут ресурса REST, маршрутизация действительно правильная. Запрос GET
на / tips / id
фактически вызывает действие show
. Из-за способа маршрутизации я предполагаю, что вы маршрутизировали его с помощью map.resources
, и это правильно.