2011-06-30 5 views
3

AJAXリクエストに応答したいアプリケーション#検索方法があります。異なる形式のレンダリングアクション

$("#content").html(escape_javascript(render(:action => 'search', :format => 'html'))); 
$("#title").html("Title"); 

私は部分的に物事を移動するとHTMLの両方でそれをレンダリングすることができ知っている:私のJSビュー(アプリ/ビュー/アプリケーション/ search.js.erb)の内部Iは、HTMLビューをレンダリングしたいと思いますJSのビューを使用することができますが、問題には、このように応答する必要のあるさまざまなアクションがあります。部分的なレンダリングだけの1行ビューファイルを作成したくない場合があります。

特定の形式でアクションを明示的にレンダリングし、content_forのさまざまな部分を取得する方法はありますか。上記の例では、content_for:titleなどで返されるHTMLに#titleを設定できます。

+0

これはレール版ですか? – corroded

+0

レールを使用して3.01 – lyricat

+0

これを試してみましたか:http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to – corroded

答えて

0

JSソースにたくさんのHTMLを出力することは素晴らしいデザインですが、それはあなたの質問ではありませんでした。テンプレートでレンダリングされたHTMLスニペットをXMLに出力するためには、私はより合理的と考える:)。

いずれにせよ、あなたの質問にはいくつかのことがあります。

これはRailsのバージョンによって異なりますが、Rails 4.xではこれがうまくいくと思いますが、近いうちに何らかの理由で:formats(複数)の配列が必要です。また、ERB <%=タグの必要性やJavaScript文字列を引用符で囲むなど、あなたの例には関係のない無関係なものがいくつかありました。

var str = "<%= escape_javascript(render(:partial => 'partial_name', :formats => ['html'])) %>"; 

だと思います。私はまさに自分自身でそれを試していない。

まだ部分的ですが、あなたは別のテンプレートの中から完全な(部分的ではない)テンプレートをレンダリングしたいと思います - 私はRailsがあなたにそれをさせないと確信しています。私にもあまりにも面倒なことがありました。しかし実際には、JS部分からHTML部分( "something.html.erb")をレンダリングする場合でも、:formats => []のトリックを使用する必要があります。または、Railsは "ねえ、js部分を見つけたいと思います名前、私たちはjsモードの男です! "

しかし、上記のように_partial_name.html.erbをJSテンプレートからレンダリングする必要があります。まだまだ素晴らしいデザインではないでしょう。

これが役に立ちます。

関連する問題