как заставить этот POST работать в рельсах? - PullRequest
1 голос
/ 10 марта 2012

Я пытаюсь использовать кнопку на передней панели моего приложения rails, которая показывает список ссылок. Я хочу, чтобы они могли нажимать «Добавить в избранное»

Прямо сейчас я изо всех сил пытаюсь заставить его работать без AJAX, но в конце концов я собираюсь добавить, что как только я получу запасной вариант (просто обычная ссылка, верно? .. затем в js я использую return false, а затем используйте ajax)

Прямо сейчас, я не вижу ничего плохого, но это не добавляет избранное, когда я нажимаю на него. Любая помощь будет оценена

маршруты:

  root  :to => 'home#index'

  resources :resources, :except => [:index]
  resources :profiles,  :only   => [:show]
  resources :favorites, :only   => [:create, :destroy]

  match '/learn',    :to => 'pages#learn'
  match '/contact',  :to => 'pages#contact'
  match '/requests', :to => 'pages#requests'

Избранное Контроллер

class FavoritesController < ApplicationController

  before_filter :authenticate_user!

  def create
    @favorite = Favorite.new(:resource_id => params[:id], :user_id => current_user.id)
    if @favorite.valid?
      @favorite.save
    else
      redirect_to root_url
    end
  end

  def destroy
    # also must find by user as well...
    @favorite = Favorite.find_by_resource_id(params[:id])
    @favorite.destroy
    redirect_to root_url
  end

end

Вот мой код Views, который фактически показывает ссылку «добавить в избранное»:

<%= link_to favorites_path(resource), :method => :post, :class => "btn btn-warning btn-mini" do %>
  <i class="icon-star icon-white" rel="tooltip" title="add to favorites"></i> Add to favorites
<% end  %>

при наведении на него URL отображается как site.com/favor.3 --- не уверен, что это правильно?

Ответы [ 2 ]

1 голос
/ 10 марта 2012

По умолчанию действия создания размещаются в рельсах, поэтому вместо изменения поведения по умолчанию добавьте новое действие для вашей цели.

внутренние маршруты

resources :favorites, :only   => [:destroy] do
 get :add, :on => :collection 
end

вид *

<%= link_to add_favorites_path(:id => resource), :class => "btn btn-warning btn-mini" do %>
  <i class="icon-star icon-white" rel="tooltip" title="add to favorites"></i> Add to favorites
<% end  %>

контроллер create действие получит renamed до add

1 голос
/ 10 марта 2012

Я думаю, что вы можете сделать это, используя форму для POST-данных вместо ссылки, которая делает GET, или добавление этого маршрута также должно сделать это

match "/favorites/add/:id" => "favorites#create"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...