按钮:创建一个对象,然后重定向以创建另一个对象?

时间:2012-03-14 18:06:36

标签: ruby-on-rails ruby formtastic

railsnoobquestion:我正在尝试开发一个功能,用户可以在rails中保存对象,然后再将其转发到表单,以创建另一个对象。

我可以想到两个选择: - 创建一个全新的路线 - 将数据添加到餐厅帖子对象,检查控制器中的数据?

是否有人制作了类似的功能?

THX

2 个答案:

答案 0 :(得分:0)

这是posts资源的标准创建操作。

def create
  @post = Post.new params[:post]

  if @post.save
    redirect_to @post, notice: 'Post was successfully created.'
  else
    render :new
  end
end

您需要做的就是将重定向从@post更改为new_post_path

redirect_to new_post_path, notice: 'Post was successfully created.'

这就是你要找的东西吗?

答案 1 :(得分:0)

解决方案是使用另一个提交按钮创建隐藏的表单字段:

%input#create_another{:name => "create_another", :type => "hidden", :value => 0 }
%a.btn.btn-info#submit_another

然后使用javascript提交表单:

jQuery(document).ready(function() {
  $("#submit_another").click(function() {
    $('#create_another').attr('value','1');
    console.log($('#create_another').attr('value'));
    $(".formtastic").submit();
    return true;
  });
});

在相应的控制器内部,在我的例子中,类别控制器:

if params[:create_another].nil?
  @create_another = false
else
  @create_another = (params[:create_another] == "1")
end
respond_to do |format|
  if @category.save
    if @create_another
      format.html { redirect_to new_restaurant_category_path(@restaurant), notice: I18n.t(:entry_successfully_created, :name => I18n.t(:category_singular)) }