如何使用嵌套资源在Rails 4中创建与用户关联的对象?

小岛

使用Rails 4,我试图使用form_for创建一个对象并将其与用户正确关联。我将“菜单”资源嵌套在“用户”下,因为菜单属一个用户,而用户具有has_many个菜单。当用户提交新菜单表单时,我希望菜单保存并与用户关联。

你会怎么做?下面的代码行得通,因为在控制器的create方法中,我将新菜单明确地铲入了current_user.menus中,但是感觉像是在变通。我一直在寻找答案,但是还没有找到一个真正好的例子。

谢谢你的帮助。另外,这是我的第一个StackOverflow问题,所以也请随时提出改进建议。

路线如下所示:

  resources :users do
    resources :menus, shallow: true   
  end

控制器如下所示:

  def new
    @menu = Menu.new
  end

  def create
    @menu = Menu.new(menu_params)
    current_user.menus << @menu

    if @menu.save
      flash[:notice] = "Menu saved"
    else
      flash[:notice] = "Sorry, menu did not save. Please try again."
    end

    redirect_to user_menus_url
  end

  private

  def menu_params
    params.require(:menu).permit(:name)
  end

视图上的表单如下所示:

<%= form_for @menu, url: user_menus_path(current_user), html: {method: "post", class: "menu_form"} do |f| %>
  <%= f.text_field :name %>
  ...
  <%= f.submit "Create" %>
<% end %>
mwoods79

您喜欢这种风格吗?

def create
  flash[:notice] = menu.valid? ? "Menu saved" : "Sorry, menu did not save. Please try again."

  redirect_to user_menus_url
end

private

def menu_params
  params.require(:menu).permit(:name)
end

# this is where the magic happens
def menu
  Menu.where(user_id: current_user.id).create(menu_params)
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更新嵌套资源Rails 4

来自分类Dev

如何设计在Rails中嵌套资源的路线?

来自分类Dev

使用Rails 4,如何在父表单中深度嵌套资源

来自分类Dev

允许在Rails 4中创建嵌套资源

来自分类Dev

Rails嵌套资源创建

来自分类Dev

如何在Rails嵌套资源中创建干净的URL?

来自分类Dev

如何使用嵌套资源检索用户二级资源

来自分类Dev

Rails 4在保存时创建关联对象

来自分类Dev

Rails 4-如何为嵌套资源添加编辑链接

来自分类Dev

使用用户输入在 ArrayList 中创建具有多个类关联的对象

来自分类Dev

在Rails 4中使用具有多态关系的嵌套形式创建新资源

来自分类Dev

Rails 4使用多个URL参数测试嵌套资源

来自分类Dev

Ruby on Rails 4:使用rspec无法测试嵌套资源

来自分类Dev

在Rails中对嵌套资源使用不同的外键

来自分类Dev

在Rails中编辑嵌套资源

来自分类Dev

带嵌套资源Rails的嵌套表单4

来自分类Dev

带嵌套资源Rails的嵌套表单4

来自分类Dev

在Formtastic中编辑/创建嵌套资源(Rails)

来自分类Dev

如何对嵌套资源中的注释使用简单形式?

来自分类Dev

如何使用Rails 4设置嵌套模型

来自分类Dev

Rails 4-使用嵌套资源时,BookingsController#create中的NoMethodError

来自分类Dev

Rails 4强参数嵌套资源

来自分类Dev

Rails 4 ForbiddenAttributesError-嵌套资源

来自分类Dev

Rails 4,更新嵌套的多态资源

来自分类Dev

Rails 4 ForbiddenAttributesError-嵌套资源

来自分类Dev

Rails 4-嵌套资源路由

来自分类Dev

如何在Rails 4中使用父字段创建has_many关联字段

来自分类Dev

如何在rails的嵌套资源中保存来自新对象的数据?

来自分类Dev

Rails 4:创建动作在浅资源的多态关联中不起作用

Related 相关文章

热门标签

归档