在控制器中分配一个值
Assign one of values in controller
Post 模型有两个字段:标题和 category_id。在 simple_form 中,我想分配名称,没关系,但我想在控制器中分配类别(值将因操作而异)。但是我有问题,因为每次 category_id 都是空的。
我只是这样做:
def fun
@post=Post.new
@post.category_id=1
end
它不起作用并且
@post=Post.new(category_id: 1)
也是。
<%= simple_form_for @post do |f| %>
<%= f.error_notification %>
<%= f.input :title %>
<%= f.button :submit %>
<% end %>
class Post < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :posts
end
def fun
@post=Post.new
@post.category_id=1
@post.save
end
发布表单后,加载它并将值保存到其中(或更新)。表单本身不会将 @post 的值传递给您的下一个控制器。如果你不打算 post 存在,如果用户没有输入任何信息,那么只在你的表单 POST 到的控制器中创建它。我提到这个假设你想要设置 category_id 的原因是因为你希望它在下一个控制器操作中保存 @post 对象时存在。
您可以按照@OscillatingMonkey 的建议进行操作,但我强烈建议您在 new
表单中使用隐藏字段标签:
<%= f.hidden_field :category_id, value: @post.category_id %>
在这种情况下,您的控制器 new
将是:
@post = Post.new(category_id: 1)
在 new
操作中调用 save
是一件很糟糕的事情,AFAIK。每次调用 new
操作时,无论用户是否继续,都会创建一个新对象。所以我更喜欢使用隐藏字段而不是在 new
.
上调用 save
方法
Post 模型有两个字段:标题和 category_id。在 simple_form 中,我想分配名称,没关系,但我想在控制器中分配类别(值将因操作而异)。但是我有问题,因为每次 category_id 都是空的。 我只是这样做:
def fun
@post=Post.new
@post.category_id=1
end
它不起作用并且
@post=Post.new(category_id: 1)
也是。
<%= simple_form_for @post do |f| %>
<%= f.error_notification %>
<%= f.input :title %>
<%= f.button :submit %>
<% end %>
class Post < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :posts
end
def fun
@post=Post.new
@post.category_id=1
@post.save
end
发布表单后,加载它并将值保存到其中(或更新)。表单本身不会将 @post 的值传递给您的下一个控制器。如果你不打算 post 存在,如果用户没有输入任何信息,那么只在你的表单 POST 到的控制器中创建它。我提到这个假设你想要设置 category_id 的原因是因为你希望它在下一个控制器操作中保存 @post 对象时存在。
您可以按照@OscillatingMonkey 的建议进行操作,但我强烈建议您在 new
表单中使用隐藏字段标签:
<%= f.hidden_field :category_id, value: @post.category_id %>
在这种情况下,您的控制器 new
将是:
@post = Post.new(category_id: 1)
在 new
操作中调用 save
是一件很糟糕的事情,AFAIK。每次调用 new
操作时,无论用户是否继续,都会创建一个新对象。所以我更喜欢使用隐藏字段而不是在 new
.
save
方法