当控制器看起来像这样时,将卷曲POST到Rails应用程序

时间:2012-04-26 16:11:40

标签: ruby-on-rails post 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不存在。当我使用浏览器创建一个Entry(当我登录并创建current_user变量)时,Create操作很有效,但我不知道是否可以在不更改控制器逻辑的情况下卷曲POST并创建Entry。如果不可能,有人可以帮助达到构建控制器逻辑的正确方向(与curl POST兼容)吗?

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

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

1 个答案:

答案 0 :(得分:0)

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

你真的应该在你的行动中设置一个before_filter来设置current_user(通过登录,我假设)。