我正在尝试压缩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,如果有任何帮助的话。
答案 0 :(得分:0)
不确定如何创建current_user(它基于什么),但这必须存在才能使您的方法正常工作。
如果您可以将param传递给指定用户的操作并将current_user设置为current_user ||= params[:user]
...请注意此安全隐患。
你真的应该在你的行动中设置一个before_filter来设置current_user(通过登录,我假设)。