我有一个正在与Devise一起为用户和管理员创建的应用程序,并且我有一个管理仪表板,我试图在其中构建上面贴有帖子的页面。 Page资源非常简单,因为它在表中仅具有其id键和一个name string属性。 posts表具有page_id作为外键,并且具有title:string和content:text属性。我在模型看起来像这样的地方建立了关联:
class Page < ApplicationRecord
has_many :posts
end
class Post < ApplicationRecord
belongs_to :page
end
,控制器如下所示:
class Admin::PostsController < Admin::AdminController
def create
@admin_page = Admin::Page.find(params[:page_id])
@admin_post = @admin_page.posts.build(params[admin_page_post])
if @admin_post.save
redirect_to admin_path
else render 'new'
end
结束
private
# Use callbacks to share common setup or constraints between actions.
def admin_page_post
params.require(:post).permit(:title, :content, :page_id)
end
# Never trust parameters from the scary internet, only allow the white list through.
结束
表格如下
<%= simple_form_for(@admin_post, url: admin_page_posts_path) do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<b />
<%= f.label :content %>
<%= f.text_area :content %>
<%= f.submit %>
<% end %>
它使用:page_id的外键在posts表中创建一个对象,但是title和content属性为nil。我是不是在做控制器创建动作错误,也许我的关联错误,或者我的表格不正确或者这三者的结合?我是Rails开发的新手,所以任何反馈都将是有用的。谢谢!