将foreign_key值传递给Rails控制器的更好方法是使用Rails的表单帮助器,它可以自动处理关联模型的数据。
以下是一个简单的示例,展示了如何在Rails应用程序中使用表单帮助器将foreign_key值传递给控制器:
class User< ApplicationRecord
has_many :posts
end
class Post< ApplicationRecord
belongs_to :user
end
class PostsController< ApplicationController
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
private
def post_params
params.require(:post).permit(:title, :content, :user_id)
end
end
<%= form_with(model: [ @user, @post ]) do |form| %>
<div>
<%= form.label :title %>
<%= form.text_field :title %>
</div>
<div>
<%= form.label :content %>
<%= form.text_area :content %>
</div>
<%= form.hidden_field :user_id, value: @user.id %>
<%= form.submit %>
<% end %>
在上面的示例中,我们使用了form_with
表单帮助器来创建一个表单,并将user_id
作为隐藏字段传递给控制器。这样,当用户提交表单时,控制器就会收到user_id
参数,并将其用于创建新的Post
对象。
这种方法可以确保foreign_key值在创建新的Post
对象时被正确传递,并且可以在控制器中进行验证和处理。同时,它还可以确保应用程序的安全性和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云