回答編集履歴

2

moke

moke score 2144

2017/07/03 18:07  投稿

category一つに対し、articleが一つしか表示されないような気がしますが…。
それでいいのかは、ほっておいて
```ruby
#articles/_form.html.erb
<%= form_for (@article) do |f| %>
<%= f.label :category_id %>
<%= f.collection_select :category_id, Category.all, :id, :category,id: :dy_select_box %>
<%= f.label :article %>
<%= f.text_area :article ,id: :article_area %>
<% end %>
```
これで、前半はおっけー
で、プルダウンメニューの方ですが
Rails4.2ですと(Rails5.1ですと色々と楽しいことができるのですが。)
[RailsでAjax基本形(Scaffoldで学ぶ)](http://qiita.com/mm36/items/684f36f22e79d0a27ae9)
を参考にしてindex.js.erbを生成し、jqueryでプルダウンメニューのchangeイベントにホックさせる。
```javascript
$('#dy_select_box').change(function(){$.ajax({
type: "GET",
url: "/articles/",
cache: false,
data: { category_id: $(this).val(), remote: true }//必要なステータスを送るremote:trueを忘れずに
});
});
```
上記をどこかであらかじめ、読み込んでおく
でcontrollerとviewを下記のように変更
```ruby
#articles_controller.rb
#~略~
def index
@articles = Article.all
@article = Article.find_by(category_id: params[:category_id])
respond_to do |format|
format.html{}
format.js{}
end
end
```
```ruby
articles/index.js.erb
$("#article_area").value("<%= @article.article %>");
```
でうまく行くと思います。
1

moke

moke score 2144

2017/07/03 18:07  投稿

category一つに対し、articleが一つしか表示されないような気がしますが…。
それでいいのかは、ほっておいて
```ruby
#articles/_form.html.erb
<%= form_for (@article) do |f| %>
<%= f.label :category_id %>
<%= f.collection_select :category_id, Category.all, :id, :category,id: :dy_select_box %>
<%= f.label :article %>
<%= f.text_area :article ,id: :article_area %>
<% end %>
```
これで、前半はおっけー
で、プルダウンメニューの方ですが
Rails4.2ですと(Rails5.1ですと色々と楽しいことができるのですが。)
[RailsでAjax基本形(Scaffoldで学ぶ)](http://qiita.com/mm36/items/684f36f22e79d0a27ae9)
を参考にしてindex.js.erbを生成し、jqueryでプルダウンメニューのchangeイベントにホックさせる。
```javascript
$('#dy_select_box').change(function(){$.ajax({   
type: "GET",   
url: "/articles/", 
cache: false,   
data: { category_id: $(this).val(), remote: true }//必要なステータスを送るremote:trueを忘れずに
});
});
```
どこかであらかじめ、読み込んでおく
下記のように変更
上記をどこかであらかじめ、読み込んでおく
controllerとviewを下記のように変更
```ruby
#articles_controller.rb
#~略~
def index
@articles = Article.all
@article = Article.find_by(category_id: params[:category_id])
respond_to do |format|
format.html{}
format.js{}
end
end
```
```ruby
articles/index.js.erb
$("#article_area").value("<%= @article.article %>");
```
```
でうまく行くと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る