Domanda

Sono riformulare questa domanda come io sto capendo il problema meglio ora.

Ho una domanda con quattro modelli: gli utenti, i prodotti, varietà e stagioni.

utente
has_many :seasons
has_many :products, :through => :seasons
has_many :varieties, :through => :seasons

prodotto
has_many :seasons
has_many :users, :through => :seasons
has_many :varieties

Varietà
belongs_to :product
has_many :seasons
has_many :users, :through => :seasons

Stagioni
belongs_to :product
belongs_to :user
belongs_to :variety

In vista del prodotto / spettacolo, elencare ogni varietà disponibile per un determinato prodotto, e gli utenti che portano quel particolare prodotto.

Quando il prodotto / spettacolo pagina viene caricata, ho visualizzare tutti gli utenti che portano il prodotto in questo modo:

<% @product.seasons.each do |c| %>  
  <%= link_to c.user.name, c.user %>  
<% end %>

Ho anche elencare le varietà disponibili per il prodotto in questo modo:

<% @product.varieties.each do |c| %>  
  <%= link_to_remote variety.name, :url => variety_path(variety) %>  
<% end %>  

Ecco dove l'Ajax deve accadere. Quando clicco su un nome di varietà, voglio sostituire il loop @ product.seasons con @ variety.seasons. Penso che questo dovrebbe solo visualizzare solo gli utenti che dispongono di quella particolare varietà. In modo che sarebbe simile a questa:

<% @variety.seasons.each do |c| %>  
  <%= link_to c.user.name, c.user %>  
<% end %>     

Mi sto avvicinando, ma non riesco a farlo funzionare. Attualmente, quando si fa clic su una varietà, non succede nulla sul frontend. Nel registro, ottengo questo:

Processing VarietiesController#4 (for ip at 2009-09-24 16:02:29) [POST]
  Parameters: {"authenticity_token"=>"9pDgKrHNbg0aMklsQsGl5BQa34bfr0Ft8Fpbxki3XXw="}
ActionController::UnknownAction (No action responded to 4. Actions: check_vendor_role, index, and show)  

Il registro si riferisce a 4 # e si riferisce a 4 come un'azione. 4 è l'ID varietà della voce che ho cliccato su.

Ecco la mia messa a punto:

ProductsController # show
      @product = Product.find (params [: id])
      @varieties = @ product.varieties       @users = @ product.users

prodotto / spettacolo vista     #Lists gli utenti che dispongono di questo prodotto

<div id="userList">  
  <%= render :partial => "products/users" %>  
</div>  

#Lists the varieties available for this product  

<% @product.varieties.each do |variety| %>  
  <%= link_to_remote variety.name, :url => variety_path(variety) %>  
<% end %>  

VarietiesController # show.

  def show
   @variety = Variety.find(params[:id])
    respond_to do |format|
      format.html
      format.xml  { render :xml => @variety}
      format.js
    end
  end

varietà / show.js.rjs
    @ Page.replace_html "userList",: parziale => "prodotti / utenti",: collection => @ variety.users

Quindi, attualmente, la pagina viene rendering e la visualizzazione del corretto html e dati. Ma l'onclick non funziona. Quando scatto una varietà, l'app non elabora correttamente la richiesta e l'elenco degli utenti non cambia.

Aggiornamento

Risposta al commento di Anatoliy:

Non so esattamente quale strada deve essere aggiunto. Ho provato ad aggiungere quanto segue, ma il risultato era lo stesso di prima:

map.resources: varietà, membro: => {: spettacolo =>: ottenere}

Potrebbe essere più preciso circa quale strada membro dovrebbe essere chiamato?

È stato utile?

Soluzione

Come indicato nei commenti (che dovrebbero essere elencati come una risposta):

Aggiungi: method =>:. Arrivare la chiamata link_to_remote di utilizzare la corretta verb HTTP per "show" contro tale URL

Altri suggerimenti

shoul essere

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top