2013-10-31 44 views
1

我有以下方案: lessons_controller - >show.html.erb,其中包含*的form_tag *与远程:真正 - >test_controller - >show.js - >_test.html.erb模拟redirect_to的远程选项

所以我收到_test.html.erb内容上教训提交的form_tag时/显示页。

但在某些情况下,我想跳过课程/显示页面。

所以我想去的教训/显示网页,并收到_test.html.erb的内容没有任何提交,地面下。像redirect_tolessons_controller远程选项来模拟form_tag提交。

可能吗?

回答

0

不知道你的目的,如果你只是想直接显示的形式,这是因为将按照JS资产

$ -> 
    $(form#show_lesson).submit() 

如果你想控制它的控制器级别一样简单。您可以执行以下操作。

# Lessons controller 
def show 
    @lesson = Lesson.find params[:id] 
    template = params[:show_directly].present? ? 'show' : 'show_with_test' 
    render template 
end 

# views/show.html.erb 
render partial: 'show_form' 

# views/show_with_test.erb 
render partial: 'test', locals: {lesson: @lesson} 

使用

浏览lessons/1将显示原始形式

浏览lessons/1?show_directly=1将直接显示所有。

+0

谢谢,比利。我想过这个解决方案。但问题是我在test_controller中有很多逻辑。如果我将直接从课程控制器渲染测试,我需要在课程控制器中复制此逻辑。我不希望这样,所以我想重定向到测试控制器来运行所有这些逻辑,然后再使测试部分呈现。 – alex

+0

亚历克斯,我仍然不知道你的目的,当你需要渲染完整,为什么?没有这些,很难提出建议。如果遇到更复杂的情况,我建议你使用'test'以外的内容。 –

+0

假设,如果访问者需要提交表单,但是登录用户可以看到所有内容,那么应该根据权限设置不同的情况。所以不同的目的决定解决方案。 –

0

我想你可以在加载课程#show时调用javascript提交,并使用_test.html.erb中的回调数据。

我不认为这是可能的和好的方式,使用'脚本'类型的重定向请求。