2015-11-26 33 views
-3

在“新建”按下提交按钮后,我会自动进入“创建”(类似“编辑”到“更新”后)。我所有的参数都可以在“创建”中找到。这是默认的。 如果我有“导出”而不是“新建”和“process_export”而不是“创建” - 如何达到类似的效果?“提交”后有什么操作?

回答

0

如果我找到你的权利比你不想发送表单到默认的create行动,而是给另一个,在你的例子到process_export行动。

您只需要在您的routes.rb中创建路线并设置自定义表单动作网址。

例子:

的routes.rb

get '/process_export' => 'your_controller#export' # replace `your_controller` with your controller name 
post '/process_export' => 'your_controller#process_export', as: :process_export 

在你export观点:

<%= form_for :resource, url: process_export_path do |f| %> <!-- Replace resource with your proper resource --> 
    <!-- Your form here --> 
<% end %> 

但我强烈建议你观察REST的约定。它让你的生活变得更轻松。

这是一些解释比较详细两个资源:

+0

谢谢,托比亚斯,试图帮助,但我仍然无法得到工作的例子。作为管理服务的一部分,我希望导出和导入项目的重要表格。我创建了控制器,放到'新'动作选择框中选择表格,并在提交后放入'创建'导出过程中。现在我必须为导入做同样的事情。我看到2种方法:将第二个提交按钮放入'新建'或使用'new2'和'create2'操作。我选择了第二种方式,但在提交'new2'后,我不会自动进入'create2'。我明白解决方案是在'routes.rb'中添加行,但语法有问题。 – sergey

+0

我强烈建议你为导入和导出创建两个控制器,因为这是两个不同的行为,它们的行为也不同。所以例如一个'ImportController'和'ExportController'。通过这种方式,他们中没有一个阻碍另一个,它具有很好的可扩展性。 – Tobias

+0

非常感谢,很简单!你是对的:更好地找到替代解决方案,而不是避免默认选项的调查。 – sergey

0

导轨遵循Convention over Configuration的概念。当类似的request出现在Rails 4中时,将自动从控制器调用REST的7种方法。例如:GET请求会调用新方法,POST会调用create方法,DELETE会调用destroy方法等。

现在,如果你正在创建一个custom methodcontrollerexport,如果你想在submit按钮点击之后调用它,你必须在routes.rb文件中设置相应routes。这是可以做到:

post "/chats" => "chats#export" 

这里,chatscontrollerexport是要在submit行动调用该控制器的方法。

你可以这样做:

$ > rails g scaffold Controller_name 

,这将自动生成所有在你的控制器7种REST方法和类似的路线产生,你可以通过做检查:

$ > rake routes 

我希望这帮助。

+0

感谢。我不完全明白什么意思/:文字。在你的术语中: – sergey

+0

@sergey:编辑我的答案。 thanx标记出来。 :) –

+0

谢谢。我不完全明白什么意思/:文字。所以:我的控制器:'聊天',我的动作是'导出',并且在'导出'中提交后我的动作是'process_export'。当然,我必须写在routes.rb获得“/聊天/出口”=>“聊天#出口”和现在(你的建议)我必须添加额外的帖子“/聊天/出口”=>“聊天#process_export”。这是对的吗? – sergey