Model, View, Controller (2)

김수민·2023년 8월 3일

Ruby on Rails 1.2.6

목록 보기
4/8

View에서 DB 입력하기

views

<% form_tag :action => "액션명A" do %>
    <input name="params key가 될 이름">
	<button type="submit"></button>
<% end %>

controllers

  def 액션명A
    변수명B = 테이블명.new
    변수명B.테이블명에 있는 속성 = params[:params key로 지정한 이름]
    변수명B.save
  end

views/login/join.rhtml

<% form_tag :action => :auth_join do %>
    <input name="username">
    <input name="passwd">
	<button type="submit">회원가입</button>
<% end %>

controllers/login_controller.rb

  def auth_join
    user = User.new
    user.user_name = params[:username]
    user.passwd = params[:passwd]
    user.save
    #
    redirect_to :controller => :article, :action => :index
  end

View에 DB 보이기

값 찾기

view에 노출시킬 값 검색

함수명B = []
함수명B[0] = "조건식"
함수명B << 조건식의 ?에 들어갈 값

변수명A = 테이블명.find :first, :conditions => 함수명B
def current_article
	if @_current_article == nil
      conditions = []
      conditions[0] = "id = ?"
      conditions << params[:id]
  @_current_article = Article.find :first, :conditions => conditions
end

return @_current_article

end
end


params는 get 또는 post 메소드로 받은 값이다.

## 값 뿌리기
>
** controllers/article_controller.rb **
```rb
def edit
    @article = current_article
    render :action => "edit"
end

받아온 해당 값을 "링크"에서 사용하고 싶을 경우 render :action => "링크"를 달아주어야한다.
views/article/edit.rhtml

    <input name="subject" value="<%= @article.title %>">

View에서 DB 수정하기

update 하기

views/article/edit.rhtml

<button type="button"
onclick="location.href='<%= url_for :action => :edit, :id => @article.id  %>'">
	수정
</button>

controllers/article_controller.rb

  def update
    current_article.title = params[:subject]
    current_article.contents = params[:contents]
#    
    current_article.save
#
    @article= current_article
    render :action => "show"
  end

삭제하기

views/article/edit.rhtml

<button type="button"
onclick="location.href='<%= url_for :action => :remove, :id => @article.id %>'">
	삭제
</button>

controllers/article_controller.rb

  def remove
    current_article.destroy
    @articles = current_user.articles
    #
    render :action => "index"
  end

연쇄 삭제하기

models/article.rb

class Article < ActiveRecord::Base
  has_many :comments, :dependent => :destroy

Article이 삭제되면 해당 Article_id와 동일한 Article_id를 가진 comments 전체를 삭제한다.

profile
sumin0gig

0개의 댓글