为什么在ruby on rails中将空白数据插入我的数据库?

时间:2016-01-07 07:50:23

标签: ruby-on-rails ruby ruby-on-rails-4 insert

我在ruby on rails应用程序上的新手,从最近几天开始,我很难将空白数据插入到数据库中。

这是我的控制者:

@post = Post.create(created_at: Time.now, user_id: @user.id)

这是我的表格:

 <%= form_for :user, url: user_path(@user), action: :create, method: :post do |f| %>

   <%= f.text_field :title %>
   <%= f.text_area :description%>
   <%= f.text_field :location%>
   <%= f.submit %>
 <% end %>

我的模特:

class User< ActiveRecord::Base
   has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end

请帮助我。

1 个答案:

答案 0 :(得分:2)

您需要将来自表单的数据传递给create方法。

使用以下命令更新create操作:

@post = @user.posts.create(user_params)

在控制器的末尾添加以下方法:

private

# For strong parameters
def user_params
  params.require(:post).permit(:title, :description, :location)
end

不要忽视您需要了解以下内容:

  1. 您无需手动传递created_at值。让框架为您处理。

  2. @user.posts.create表示您正在为posts创建@user@user.posts.create会自动填充您的user_id列。

  3. 出于安全考虑,您应该使用strong parameters

  4. 进一步建议阅读:Rails Official Guide