0

フォームの読み込みに問題があります。なぜこれが起こっているのかわかりません。

問題:フォーム (/messages/new) を読み込もうとすると、空白のページが表示され、エラー メッセージは表示されません。

問題の理由:問題は、メッセージとユーザーの間のリンクが適切に確立されていないことだと思います。そのため、フォームが正しく読み込まれていませんが、修正方法がわかりません。

背景:現在、POSTS/INDEX ファイル (以下に添付) を介してフォームにアクセスしていますが、これは間違っていると思います。なぜなら、作成した投稿の [連絡先] ボタンをクリックした場合など、ユーザーごとに固有のリンクが必要だからです。 John によって、メッセージは John に送信され、他のユーザーに対しても同様に送信されます。Simple Private Messaging プラグインを使用しています。

フィードバックをお寄せいただきありがとうございます。

ありがとう、

ファイサル

メッセージ>新しいビュー

<% form_for @message, :url => messages_path(:user_id => @user) do |f| %>
<p>
To:<br />
<%= f.text_field :to %>
<%= error_message_on @message, :to %>
</p>
<p>
Subject:<br />
<%= f.text_field :subject %>
<%= error_message_on @message, :subject %>
</p>
<p>
Message<br />
<%= f.text_area :body %>
<%= error_message_on @message, :body %>
</p>
<p>
<%= submit_tag "Send" %>
</p>
<% end %>

メッセージモデル

class Message < ActiveRecord::Base

is_private_message

attr_accessor :to

end

ルート.RB

Mysalary::Application.routes.draw do

resources :messages do
   collection do
     post :delete_selected
     end
   end

resources :users
resources :profiles
resources :pages
resources :posts

get "pages/home"
get "pages/about"
get "pages/legal"
get "pages/feedback"

root :to => 'posts#new'

end

メッセージコントローラー

class MessagesController < ApplicationController

before_filter :set_user

def index
if params[:mailbox] == "sent"
  @messages = @user.sent_messages
else
  @messages = @user.received_messages
end
end

def show
@message = Message.read_message(params[:id], current_user)
end

def new
@message = Message.new

if params[:reply_to]
  @reply_to = @user.received_messages.find(params[:reply_to])
  unless @reply_to.nil?
    @message.to = @reply_to.sender.login
    @message.subject = "Re: #{@reply_to.subject}"
    @message.body = "\n\n*Original message*\n\n #{@reply_to.body}"
  end
end
end

def create
@message = Message.new(params[:message])
@message.sender = @user
@message.recipient = User.find_by_login(params[:message][:to])

if @message.save
  flash[:notice] = "Message sent"
  redirect_to user_messages_path(@user)
else
  render :action => :new
end
end

def delete_selected
if request.post?
  if params[:delete]
    params[:delete].each { |id|
      @message = Message.find(:first, :conditions => ["messages.id = ? AND (sender_id = ? OR recipient_id = ?)", id, @user, @user])
      @message.mark_deleted(@user) unless @message.nil?
    }
    flash[:notice] = "Messages deleted"
  end
  redirect_to :back
end
end

private
def set_user
 @user = User.first
end
end

投稿>インデックスビュー

<table class="table table-striped">
<tbody>
<% @posts.each do |post| %>
<tr>
<td>I am a <%= post.title %> getting married in <%= post.job %> in <%= post.location %>, and looking for a <%= post.salary %>. My budget is <%= post.salary %>.</td>
<td> <button class="btn" data-toggle="button" onClick="javascript:location.href = '/messages/new';" />Contact</button></td>
<td><%= time_ago_in_words(post.created_at) %> ago.</td>
<!--/. 
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
-->
</tr>
<% end %>
</tbody>
</table>
4

1 に答える 1

1

メッセージ/改行 1、ERB の開始タグをサイレントタグからラウドタグに変更してみてください

s/<%/<%=

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.htmlから入手

于 2012-04-21T17:57:45.523 に答える