0

我正在尝试 curl POST 我的 Rails 应用程序以创建一个新的 Entry 对象。问题是我的 entries_controller 创建操作如下所示:

      def create
        @user = current_user
        @entry = @user.entries.build(params[:entry])

        respond_to do |format|
         if @entry.save
          format.html { redirect_to landing_page_url, notice: 'Entry was successfully created.' }
          format.json { render json: @entry, status: :created, location: @entry }
         else
          format.html { render action: "new" }
          format.json { render json: @entry.errors, status: :unprocessable_entity }
         end
        end
       end

调用 @user.entries.build 只会返回一个异常,因为 current_user 不存在。问题是当我使用浏览器创建条目时(当我登录并创建 current_user 变量时),创建操作效果很好,但我不知道是否可以在不更改控制器逻辑的情况下卷曲 POST 并创建一个条目。如果不可能,有人可以帮助找到正确的方向来构建控制器逻辑(与 curl POST 兼容)吗?

如果这是一个愚蠢的问题,我很抱歉,我对这一切都很陌生。

PS:我正在使用 Rails 3.2.3,如果有帮助的话。

4

1 回答 1

0

不确定您如何创建 current_user (它基于什么),但这必须存在才能使您的方法正常工作。如果您可以将参数传递给指定用户并将 current_user 设置为current_user ||= params[:user]... 的操作,请注意此操作的安全隐患。

您确实应该在设置 current_user 的操作上有一个 before_filter (我假设是通过登录)。

于 2012-04-26T16:46:12.203 回答