Ruby on rails 是否可以将值传递给params散列,而不将属性放入Rails 4中的表单中?
因此,我想在用户在rails视图中提交表单后将值传递给rails控制器方法。我希望参数散列的结构如下: {:user=>{:username=>“某个名字”},:title=>“我的标题”} 为此,我在表单元素外部使用了一个隐藏的\字段\标记。生成的html如下所示:Ruby on rails 是否可以将值传递给params散列,而不将属性放入Rails 4中的表单中?,ruby-on-rails,ruby,Ruby On Rails,Ruby,因此,我想在用户在rails视图中提交表单后将值传递给rails控制器方法。我希望参数散列的结构如下: {:user=>{:username=>“某个名字”},:title=>“我的标题”} 为此,我在表单元素外部使用了一个隐藏的\字段\标记。生成的html如下所示: <input type="hidden" name="title" id="title" value="My Title" /> <%= form_for @user, :as => :user, :u
<input type="hidden" name="title" id="title" value="My Title" />
<%= form_for @user, :as => :user, :url => sign_in_path(@user) do |f| %>
<%= f.input :username %>
#usual form field stuff
:user,:url=>sign_in_path(@user)do | f |%>
#常用表单字段内容
然而,当我检查params散列时,我只在其中找到:username键和值对。这是否意味着标题必须通过“f.title”语法成为表单的一部分?如果可能的话,我不想这样做,因为标题不是用户模型的一部分。这是一个单独的属性,我想用于控制器内的其他内容。是的,标题必须是表单的一部分,才能随表单一起提交 如果您不想在
用户
模型中使用标题
参数,则应使用Rails 4强参数
class UsersController < ActionController::Base
# your actions here
private
def person_params
# don't permit the title paramter here.
params.require(:user).permit(:username)
end
end
class UsersController
您应该在表单中包含隐藏字段,以便将其包括在内:
<%= form_for @user, ... do |f| %>
<%= hidden_field_tag :title, 'My Title' %>
<%= f.input :username %>
# And so on...
#等等。。。
您还应该按照建议使用强参数,这是一种一般的最佳做法。您需要将
隐藏字段标记放在表单中
并在控制器中使用参数[:title]