Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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 销毁后重定向用户_Ruby On Rails_Haml - Fatal编程技术网

Ruby on rails 销毁后重定向用户

Ruby on rails 销毁后重定向用户,ruby-on-rails,haml,Ruby On Rails,Haml,我有3个模型:问题、答案和简介(我知道,应该称为“用户”)。当您查看问题Q时,我会在数据库中查询Q的答案(它们通过id链接)。在视图中,当前用户可以通过单击其答案旁边显示的销毁链接来删除其答案: %table %tr %td Answers: - @answers.each do |a| %tr %td - @provider = Profile.find(a.provider) %i #{h @

我有3个模型:问题、答案和简介(我知道,应该称为“用户”)。当您查看问题Q时,我会在数据库中查询Q的答案(它们通过id链接)。在视图中,当前用户可以通过单击其答案旁边显示的销毁链接来删除其答案:

%table
  %tr
    %td
      Answers:
  - @answers.each do |a|
    %tr
      %td
        - @provider = Profile.find(a.provider)
        %i
          #{h @provider.username} said:
        %br
        #{h a.description}
      %td
        = link_to 'View full answer', a
      %td
        - if a.provider == @profile.id
          #{link_to 'Delete my answer', a, :confirm => 'Are you sure?', :method => :delete}
问题是,当用户单击destroy链接时,它会重定向到/answers/index。我希望它重定向到/questions/Q。什么是最好的方法

我知道有一个
redirect\u to
方法,但当我想重定向到另一个控制器的操作时,我不知道如何实现它。它还需要记住删除答案的问题

我试着在链接中传递类似于:question\u id的内容:

#{link_to 'Delete my answer', a, :confirm => 'Are you sure?', :question_id => @question.id, :method => :delete}
在回答控制器中#销毁:

问题:id信息未传递给destroy方法,因此出现以下错误:

Couldn't find Question without an ID
为了确认,我在
问题之前添加了一个
put
调用。find
,它返回了
nil

我还尝试将问题id存储在会话信息中。AnswersController#销毁对调用会话[:question_id]而不是参数[:question_id]的更改。但是,我得到了一个不同的错误:

Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
我不知道如何解决这个错误。我应该将返回的
放在哪里


任何帮助都将不胜感激

在定义销毁行为的操作中,只需在完成时向添加重定向

将_重定向到可以使用任何标准url/rout帮助程序方法:

假设您有一个问题控制器以及相关的路由和操作,您可以使用:

redirect_to question_path(@question)
在上述已编辑的案例中,您需要确保正确传递问题id:

链接到“删除我的答案”,答案路径(a,:question\u id=>@question.id),:confirm=>“确定吗?”,:method=>:Delete

link_to的第二个参数是有问题的URL。您可以检查生成的HTML以确认数据是否按预期呈现

这里还有一些其他选项:

根据路线和关系的设置方式,您可能能够在问题上下文中创建嵌套路线来回答问题。这将为您提供一组问答路径帮助


如果答案属于问题,您实际上可以在销毁操作中使用Answer.Question\u id并省去麻烦:p

在定义销毁行为的操作中,您只需在完成时向添加重定向

将_重定向到可以使用任何标准url/rout帮助程序方法:

假设您有一个问题控制器以及相关的路由和操作,您可以使用:

redirect_to question_path(@question)
在上述已编辑的案例中,您需要确保正确传递问题id:

链接到“删除我的答案”,答案路径(a,:question\u id=>@question.id),:confirm=>“确定吗?”,:method=>:Delete

link_to的第二个参数是有问题的URL。您可以检查生成的HTML以确认数据是否按预期呈现

这里还有一些其他选项:

根据路线和关系的设置方式,您可能能够在问题上下文中创建嵌套路线来回答问题。这将为您提供一组问答路径帮助


如果答案属于问题,你实际上可以在销毁操作中使用Answer.Question_id并省去麻烦:p

Hmm,我尝试过一个版本,但我仍然存在“保存”和首先重新提交问题的问题。我修正了我的问题,以反映这一信息。谢谢嗯,我试过一个版本,但我仍然有“保存”的问题,首先要重新提出这个问题。我修正了我的问题,以反映这一信息。谢谢答案属于问题吗?一个问题可以有很多答案。然而,我没有把这些关系放进去。说得好!答案属于问题吗?一个问题可以有很多答案。然而,我没有把这些关系放进去。说得好!