0

我正在尝试创建列表,每个列表都有 2 个属性名称和描述。使用控制台但不使用网站表单时,数据库会创建并保存它。检查日志文件时,我发现网站表单没有发布,而是使用获取和是重定向到自身,如何使网站形成 POST 而不是 GET,以便将其存储在数据库中。

日志文件:

在 2013-09-18 12:35:14 -0400 为 127.0.0.1 开始 GET "/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 %>
4

2 回答 2

1

您的form_for助手正在路由到不正确的操作。尝试路由到create操作:

<%= form_for @list, url: {action: "create"} do |f| %>
于 2013-09-18T17:25:00.927 回答
0

我不知道您粘贴的控制器代码摘录是否完整,但您可能错过了初始化列表对象以进行更新。在你的update行动中,你只有

if @list.update_attributes(params[:lists])

但是您@list之前没有初始化变量。所以你可能需要类似的东西

@list = Lists.find(params[:id])

您还可以检查您的日志文件并验证发送到控制器的参数。

于 2013-09-18T16:03:31.830 回答