我正在尝试创建列表,每个都有2个属性名称和说明。数据库确实创建它并在使用控制台但不使用网站表单时保存它。当检查日志文件时,我发现网站表单没有发布而是使用获取并重定向到自身,如何使网站形成POST而不是GET,以便将其存储在数据库中。
日志文件:
在2013-09-18 12:35:14 -0400开始获取127.0.0.1的“/assets/jquery_ujs.js?body=1” 服务资产/jquery_ujs.js - 304未修改(0ms)
这是列表控制器:
def create
@list = Lists.new(params[:lists])
if @list.save
redirect_to @list
else
render 'new'
end
end
def update
if @list.update_attributes(params[:lists])
flash[:success] = "lists updated"
redirect_to @list
else
render 'edit'
end
end
def new
@list = Lists.new
end
这是用户创建列表的表单
<%= form_for @list, url: newlist_path(@list), html: { method: :put } do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
</br>
<%= f.label :description %>
<%= f.text_field :description %>
<%= f.submit "Create the List" %>
<% end %>
答案 0 :(得分:1)
您的form_for
帮助程序正在路由到不正确的操作。请尝试路由到create
操作:
<%= form_for @list, url: {action: "create"} do |f| %>
答案 1 :(得分:0)
我不知道您粘贴的控制器代码摘录是否完整,但您可能错过初始化列表对象以进行更新。在您的update
操作中,您只有
if @list.update_attributes(params[:lists])
但您之前没有初始化@list
变量。所以你可能需要像
@list = Lists.find(params[:id])
您还可以检查日志文件并验证将哪些参数发送到控制器。