Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中的action\u name方法有多可靠?_Ruby On Rails_Ruby_Model View Controller_Controller - Fatal编程技术网

Ruby on rails rails中的action\u name方法有多可靠?

Ruby on rails rails中的action\u name方法有多可靠?,ruby-on-rails,ruby,model-view-controller,controller,Ruby On Rails,Ruby,Model View Controller,Controller,如何确保controller.action\u名称返回正确的信息?我依靠它在菜单栏中生成用户友好的消息。考虑下面的场景。 当我使用以下方法时,action_name方法非常有效: redirect_to edit_profile_path # I get action_name as "edit" in my ApplicationController 但当我使用以下内容时,它不会提供我需要的信息: render :action => "edit" # The action_name

如何确保controller.action\u名称返回正确的信息?我依靠它在菜单栏中生成用户友好的消息。考虑下面的场景。

当我使用以下方法时,action_name方法非常有效:

redirect_to edit_profile_path # I get action_name as "edit" in my ApplicationController
但当我使用以下内容时,它不会提供我需要的信息:

render :action => "edit"  # The action_name shows as "get" instead of "edit"
是否有一种方法可以使用“渲染动作”并仍然获得正确的动作名称

谢谢, 塔布雷兹

----回应米沙评论的代码片段----

这是我在控制器中拥有的:

def update
    if @profile.update_attributes(params[:profile]) 
        format.html { 
            flash.now[:notice] = 'Profile was successfully updated.'            
            render :action => "edit" 
        }
end
我没有重定向,因为我仍然希望用户保持编辑模式

在我的应用程序助手中,我有以下代码:

if(action_name == "edit" && (can? :read, l_disp_object) )  then
    path_links_subheader.concat(link_to 'Show Saved Version', :controller => controller.controller_path, :action => :show) 
end

基本上,如果用户处于编辑模式,我需要菜单上的“显示保存的版本”链接。但是,当我使用“render:action”语法时,action会变为“get”,这在Misha提到的基础上是有意义的(action在这里是一个误称)。那么,有没有一种方法可以在不发出重定向的情况下实现这一点?我没有使用重定向的唯一原因是,为用户保留当前选项卡的逻辑与渲染操作一起工作。如果实现这一点的唯一可能方法是通过重定向,我可能必须重写它。

命名有点混乱,但是
render:action=>“edit”
呈现编辑视图。它与控制器动作编辑无关<代码>操作\u名称是可靠的,但由于上述原因,您不能依赖它。打开一个新问题和/或共享更多代码,以获取解决问题的建议。

routes.rb文件中有哪些内容可用于此操作?嗨,Frederick-请查看更新版本。我可以追溯到我显示编辑视图的方式。嗨,米沙-谢谢你的回复。我添加了代码片段,并说明了为什么我还没有改为重定向的原因。请检查并让我知道是否有解决方法。米沙-谢谢你的回答。至少我现在知道它为什么不起作用了。我找到了另一种保存选项卡状态的方法,现在可以使用重定向。如果能够以某种方式使用render view语句而不丢失渲染视图的操作,那就太好了。所以,如果是你,一定要分享。再次感谢!