4

私はしばらくの間Railsで作業しています。私はいくつかのことを理解しましたが、私はこれに苦労しています。タイトルだけでレンダリングされた一連のブログ投稿があります。コントローラでは、オブジェクトは次のようになります。

@articles

メインページでは、部分的にレンダリングし、タイトルだけを表示します。

<%= render 'shared/article_view', :collection => @articles %>

これにより、メインページの記事のリストが表示されます。タイトルをクリックすると、別ので開きたいと思いますdiv。私はこれをフォームで動作させています。ただし、呼び出されるjavascriptにパラメーターを渡す方法がわかりません。私はid自分のview_article.js.erbファイルにを渡すことができ、そこから電話をかけることができると思います

@article = Article.find_by_id(id)

その後

<p><%= @article.text %></p>

ただし、このファイルに任意の種類のパラメーターを渡す方法がわかりません。それはうまくいかないかもしれません、そして私はこれをすることで完全に間違っているかもしれません。私が言ったように、まだ学んでいます。とにかく、助けてくれてありがとう!

4

2 に答える 2

4

私の構文は少しずれているかもしれませんが、これが私がそれについてどうやって行くかです:

HTML

 <div data-id="<%= @article.id %>" class="article"><%= @article.title %></div>

JS

これは、jsがどのように機能するかを説明するのに役立つ場合があります:http://guides.rubyonrails.org/asset_pipeline.html。私が通常行うことは、特定のビューのすべてのバインディング(およびその他のメソッド)を含むオブジェクトを作成することです。次に、ビューの下部のどこかで、ドキュメント準備完了ブロックにオブジェクトのインスタンスを作成し、DOMをバインドします。すべてのjsは、レイアウトに含める場所に関係なく、マニフェストファイル(application.js)によって追加されます。

app / Assets / javascripts / users.js

// Wraps your binding in a document ready function
// Runs as soon as the DOM is loaded
$(function() {
  $('.article').on('click', function() {
    var id = $(this).attr('data-id');
    $.get('articles/' + id, function(data) {
      // Handle the result
      $('.article-window').html(data);
    });
  });
});

app / Assets / javascripts / application.js

  // This directive will include all your js files in the javascripts folder
  //= jquery
  //= require_tree .

app / views / layouts / application.html.erb(またはレイアウトがどこにあっても)

  // This adds all your js to the page
  <%= javascript_include_tag "application" %>

Railsコントローラー

class ArticlesController < ApplicationController
  respond_to :html, :json
  def show
    @article = Article.find(params[:id]
    respond_with do |format|
      format.json { render :json => @article }
    end
  end
end
于 2012-06-28T05:18:19.130 に答える
0
class ArticleController

def show
  @article = Article.find(params[:id]
  respond_to do |format|
    format.json {render :json => @article.text } #now when u try to get host/articles.json/[id of article] you will get json with article object
  end
end

article.js.erb(私の例ではcoffe)では、http://js2coffee.org/article.js.coffeeを使用してcoffeをjsに変換できます

$('document').ready ->
  $('.article').live 'click', ->
    $.ajax
      url: 'articles/' + $(this).attr('id') #getting article#show with id of article
      complete: (data) ->
        article = JSON.parse(data.responseText)
        $('p').empty()
        $('p').append(article.text)

エラーが発生した場合は、このようなものをgmail.comのantiqeにメールで送信してください

于 2012-06-28T09:05:09.630 に答える