我希望每个用户在名为business的表中只有一行数据。他可以第二次编辑它。
此外,我想使用 form_for 分别提交每个列值,但是当我在第二次为不同的列条目提交表单时这样做时,它会转到第二行排空。
我怎样才能实现这个目标?
这是我的代码......
<%= form_for @new_business do |f| %>
<%= f.text_area :first_problem %>
<%= f.submit %>
<% end %>
数据表的屏幕截图
任何帮助都表示赞赏,因为我是rails的新手。感谢。
答案 0 :(得分:0)
一个用户只能拥有一个企业,您需要在它们之间设置关系
在user.rb模型中
has_one :business
在business.rb模型中
belongs_to :user
对于您的第二个问题,我认为您没有传递要更新列的行ID,因此每次为该列创建新条目
答案 1 :(得分:0)
您的代码片段似乎来自您的新模板(即&#34; app / views / businesses / new.html.erb&#34;)。只应在需要创建新对象时使用。您的控制器可能会说类似
def new
@new_business = Business.new
end
提交表单时,将调用控制器中的:create操作,该操作应在数据库中创建新记录。
如果要编辑该对象,可以在控制器中使用与edit.html.erb视图对应的编辑操作。在控制器中有类似的东西:
def edit
@business = Business.find(params[:id])
end
的形式与您在视图中列出的形式类似。提交该表单时,它应该路由到控制器中的:update操作,该操作将更新数据库中的现有记录。
关于您要完成的任务的棘手部分是限制每个用户只能在数据库中创建一条记录。有很多方法可以做到这一点,但总的想法是限制用户访问新用户并在创建记录后在控制器中创建操作。您可以使用before_action(如果使用Rails 4.0或更高版本)或before_filter(如果使用Rails&lt; 4.0)来调用检查用户是否已创建记录的方法。