iphone не может отправлять сообщения в мое приложение rails - PullRequest
0 голосов
/ 25 марта 2011

Итак, я пробовал несколько разных способов подключить свое приложение для iPhone к моей спокойной серверной части ROR, и все, кажется, работает нормально, обрабатывая данные (json) с запросами 'get', но при публикации я не могу это сделать.Я пробовал ObjectiveResource и двух или трех других, и все они имеют ту же проблему.Я думаю, что-то не так в моем приложении ROR?Я заметил, что все примеры проектов iPhone используют https для производственных приложений, нужно ли производственному приложению использовать https для iPhone, чтобы установить сеанс и иметь возможность публиковать сообщения?

ЗДЕСЬ - это то, что я получаю за ошибку, если яиспользуйте http://localhost:3000/posts

Обработка PostsController # create (для 127.0.0.1 в 2011-04-05 20:49:42) [POST] Параметры: {"post" => {"budget" => "222"}} Хэш интересов пользователя: false

NoMethodError (неопределенный метод posts' for false:FalseClass): app/controllers/posts_controller.rb:113:in create '

Если я использую http://localhost:3000

Обработка индекса PostsController # для 127.0.0.1в 2011-04-05 20:49:42) [POST] Параметры: {"post" => {"budget" => "222"}}

Вот мой метод Create: def create # @post = Post.new (params [: post]) @post = current_user.posts.build (params [: post])

respond_to do |format|
  if @post.save
    flash[:notice] = 'Post was successfully created.'
    format.html { redirect_to(@post) }
    format.xml  { render :xml => @post, :status => :created, :location => @post } 
    format.json { render :json => @post, :status => :created, :location => @post } 
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @post.errors, :status => :unprocessable_entity } 
    format.json { render :json => @post.errors, :status => :unprocessable_entity }
  end
end

end

Вот метод:

# POST /posts
# POST /posts.xml
 def create
#@post = Post.new(params[:post])
@post = current_user.posts.build(params[:post])

respond_to do |format|
  if @post.save
    flash[:notice] = 'Post was successfully created.'
    format.html { redirect_to(@post) }
    format.xml  { render :xml => @post, :status => :created, :location => @post } 
    format.json { render :json => @post, :status => :created, :location => @post } 
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @post.errors, :status => :unprocessable_entity } 
    format.json { render :json => @post.errors, :status => :unprocessable_entity }
  end
end

end

Iphone call:

 // CRUD methods using Resource.h 
- (void)createRemote {
NSString *url =
[NSString stringWithFormat:@"%@/posts", siteURL];
[Resource post:[self params] to:url];
}

% @ / posts равно http://localhost:3000/posts

Ответы [ 3 ]

1 голос
/ 26 марта 2011

У вас установлен protect_from_forgery на вашем ApplicationController?

Это по существу убивает POSTing информацию из любого места, кроме форм на вашем сайте. Попробуйте закомментировать это и посмотреть, если что-то начинает работать.

1 голос
/ 06 апреля 2011

Как сказал peterjb, проверьте защиту от подделки.Если вы находитесь на рельсах 3, найдите csrf_meta_tag в вашем application.html.erb.

0 голосов
/ 25 марта 2011

https - это не обязательно, это то, как ваш сервер настраивается для нужд безопасности. Вы можете иметь http и https оба без проблем.

Я предлагаю вам взглянуть на журнал в конце приложения ROR и знать, что вы получаете данные HTTP POST - если вы не можете получить какие-либо данные в конце приложения ROR, отправьте код, который выполняет запрос POST с вашего iPhone люди могут лучше проанализировать это.

...