Ruby on Rails以两种方式将数据保存到模型中

时间:2017-10-25 21:32:27

标签: ruby-on-rails ruby model-view-controller model

我想复制wordpress post功能。

例如,您可以创建新帖子并以两种方式保存 - "发布帖子"和"制作草案"

使用Rails资源路由我创建了create方法和new方法。

我还创建了自定义方法,以便在发布模式和草稿模式下保存。

class GroupEventsController < ApplicationController
def new
  @ge = GroupEvent.new
end

def publishnew
  @ge = GroupEvent.new(groupevent_params)
  @ge.save
  redirect_to @ge
end
def create
  @ge = GroupEvent.new(groupevent_params)
  @ge.save
  redirect_to @ge
end

private
def groupevent_params   
  abort params.inspect          
  params.require(:group_event).permit(:name, :description, :startdate, :duration, :status)
end

提交表单时效果很好,但是当你去发布新方法时它不起作用。 它显示了这样的错误。 param丢失或值为空:group_event

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我建议采用不同的方法来获得相同的行为。

如果我理解正确,您希望表单提交的行为方式不同。

如何添加两个按钮......

f.submit :publish
f.submit :draft

这会有一些像

这样的东西
<input type="submit" value="publish" id=".." name="commit" />
<input type="submit" value="draft" id=".." name="commit" />

然后在控制器动作中你可以做一些像

这样的事情
class GroupsEventsController < ApplicationController
  def create
    if params[:commit] == 'publish'
      publish_event
    else
      draft_event
    end
  end

  private

  def publish_event
    // Appropriate code here
  end

  def draft_event
    // Appropriate code here
  end
end

这样你就不需要在客户端做JS foo doo来让它发布到不同的路由。