-1

Ruby on Rails Twitterアプリのチュートリアルをフォローしようとしていますが、最後に到達したときに、他のユーザーの投稿を作成できるという事実があまり好きではないことに気付きました。私の願いは、自分で作成することです。

どうすればこれを達成できますか

Status Controller Create:
def create
@status = Status.new(params[:status])
respond_to do |format|
  if @status.save
    format.html { redirect_to @status, notice: 'Status was successfully created.' }
    format.json { render json: @status, status: :created, location: @status }
  else
    format.html { render action: "new" }
    format.json { render json: @status.errors, status: :unprocessable_entity }
  end
end
end

ステータス現在のビューの作成:

...
<div class="field">

<%= f.input :user_id, collection: User.all, label_method: :full_name %>
<%= f.input :content %>
</div>
<div class="form-actions">
<%= f.submit %>
</div>

ステータスモデル:

class Status < ActiveRecord::Base
attr_accessible :content, :user_id
belongs_to :user
end

誰もが助けてくれることを願っています!!

4

3 に答える 3

2

ここで認証を使用できます!


これを行うためのより簡単な方法は、チュートリアル用にコーディングしているため(=>学習したい)、関連付けを使用してそれを解決できます。

app / models/user.rbの内部

has_many :statuses, dependent: :destroy

そして、attr_accessible:user_idをapp / models/status.rbから削除します

attr_accessible:attributeは、ユーザーが不要なフォームを介してこの属性の値を明示的に設定できることを意味します。

次に、投稿が作成されているユーザーが現在サインインしているユーザーであるかどうかをコントローラーにチェックインします。そうでない場合は、許可しないでください。

于 2012-11-27T01:59:08.470 に答える
1

アプリケーションコントローラーの場合:

def current_user
  User.find(session[:user_id]) if session[:uid]
end

ユーザーを認証するときに、セッションuser_idを設定する必要があります。

あなたの見解では(SimpleFormを使用):

  <%= f.input :user_id, as: :hidden, input_html: { value: current_user.id }%>

これは機能します。行き詰まったら教えてください。

于 2012-11-27T02:21:09.463 に答える
0

これを変更した場合

<%= f.input :user_id, collection: User.all, label_method: :full_name %>

(some place in you view - or in the controller)
<% <your object>.user_id = <current user id> %>
...
<%= f.hidden_field :user_id %>

私はそれがうまくいくと思います

于 2012-11-27T02:01:54.010 に答える