1

私はタスクなどを追加できるアプリに取り組んでいます。これはちょっと変だと思いますが、他の人がこれをどのように実装するかを見たいだけです。次のコードをヘルパーメソッドにどのように変更して使用しますか?

元のコード

<h2>My Tasks</h2>
<% task = @work.tasks %>
<% if task.empty? %>
  <%= link_to 'Create a new task', new_task_path %>
<% else %>
  <%= render :partial => 'notes/note', :locals => {:note => @note} %>
<% end %>

ヘルパーメソッドを実行する私の方法

def task_check
  task = @work.tasks 
  if task.empty? 
    link_to 'Create a new task', new_task_path
  else 
    render :partial => 'notes/note', :locals => {:note => @note} 
  end 
end

私からしてみれば

<%= @work.task_check %>
4

2 に答える 2

2

個人的には、これをまったく抽出しません。これはビューロジックであり、ビューに属します。それは間違いなくモデルに属していませんが、おそらくヘルパーに抽出される可能性があります。少し変更します:

<h2>My Tasks</h2>
<% if @work.tasks.blank? %>
  <%= link_to 'Create a new task', new_task_path %>
<% else %>
  <%= render :partial => 'notes/note', :locals => {:note => @note} %>
<% end %>

blank?の代わりに呼び出すempty?こと@work.tasksは、nil

于 2012-04-24T03:34:37.653 に答える
1

モデルでヘルパーを定義することはできません。renderlink_toまたは他のコントローラやビューメソッドにアクセスすることはできません。helpersしたがって、ディレクトリapplication_helpers.rb内のファイルとほぼ同じようにメソッドを定義するだけですwork_helpers.rb

def task_check(work, note)
  task = work.tasks 
  if task.empty? 
    link_to 'Create a new task', new_task_path
  else 
    render :partial => 'notes/note', :locals => {:note => note} 
  end 
end

そして、あなたの見解ではそれを次のように呼びます:

<%= task_check(work, note) %>
于 2012-04-24T02:37:39.580 に答える